javascript - 在 JavaScript 中命名对象属性的方法是一个好习惯吗?

标签 javascript function object anonymous-function

我听说为匿名函数命名有助于调试。

JQuery:

$( "p" ).on( "click", function clickHndlr() {
    /* body...*/
});

节点:

var EventEmitter = require('events').EventEmitter,
    emitter = new events.EventEmitter();

    emitter.on('customEvent', function customEventHndlr (message, status) {
        /* body...*/
    });

普通 JS:

button.addEventListener('keypress', function buttonHndlr() {
    /* body...*/
});

但是对象呢?

var starShipChecker = (function() {
   var publicAPI = { 
     checkForWarpDrive : function(starShip){
       if(!starShip.hasOwnProperty('warpDrive')) {
           starShip.warpDrive = undefined;
           console.log('Your star-ship, the ' + starShip.name + ', now has warp-drive!' + 
           '\n' + 'Use the addWarpDrive method to apply the maximum warp relevant to your ship Class...');
       } else {
           console.log('Your star-ship, the ' + starShip.name + ', has warp-drive already!' +
           '\n' + 'But use the addWarpDriveMaxLevel method to apply the maximum warp relevant to your ship Class...');
       }
     },
    addWarpDriveMaxLevel : function(){}
   };
   return publicAPI;

})();

你会得到同样的好处吗?还是因为它们是方法而有所不同?

checkForWarpDrive : function checkWarpDriveLikeYouWereScotty(starShip){  /* body...*/},
addWarpDriveMaxLevel : function addWarpDriveLikeYouWereScotty(){  /* body...*/}

最佳答案

是的。那里有同样的好处(and more)。

但是,引擎/调试器变得越来越智能,并且将通过它们所属的对象属性的键隐式命名函数。 ES6 甚至要求这样做(检查 .name property )。但如果您使用 ES6,您可能会使用 method definition无论如何:-)

关于javascript - 在 JavaScript 中命名对象属性的方法是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008445/

相关文章:

javascript - 如何在提示中接受大写字母? JS

c - 用函数修改 C 结构的子结构(用于 trie 的应用)

javascript - 使用纯 JavaScript 交换默认字段值

javascript - 类型错误 : document. getElementById(...) 为空

c++ - 使用任意值初始化/调整容器大小的建议方法

javascript - 无法使用 Javascript 或 JQuery trim 对象属性

c++ - 如何在对象中初始化指针的静态数组

javascript - 使用过滤功能从另一个对象创建对象

javascript - 在 Javascript 中使用枚举来表示月份编号和名称

c++ - 在什么情况下应该将成员函数声明为友元?