在JavaScript中为对象属性的方法命名是一种好习惯吗?

Is it good practice to name a method of a objects property in JavaScript?

本文关键字:一种 好习惯 JavaScript 对象 属性 方法      更新时间:2023-09-26

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

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...*/}

是。同样的好处(甚至更多)

然而,引擎/调试器变得越来越智能,并且将隐式地根据它们所属的对象属性的键来命名函数。ES6甚至要求(检查.name属性)。但如果你使用ES6,你可能会使用一个方法定义:-)