JavaScript命名对象函数

Dog*_*Boy 2 javascript javascript-objects

相当新的JS,

使用具有函数的对象的简单示例:

var person = {
    name: "Bob McBobson",
    talk: function descriptiveFunctionName() {alert("Hello");}
};
Run Code Online (Sandbox Code Playgroud)

我注意到你可以命名对象函数(例如上面的descriptiveFunctionName)

有没有这种情况需要/有帮助而不是匿名?

T.J*_*der 5

有没有这种情况需要/有帮助而不是匿名?

从ES2015开始,即使你遗漏了descriptiveFunctionName,你的函数也不会是匿名的,它会有一个名字(talk).ES2015添加了推断的函数名称(name最后是属性).名称是推断在大多数情况下,他们所唯一真正重要的地方都没有推断是obj.foo = function() { }(这让函数的名称"",而不是"foo").

另外,如果函数将是递归的或以其他方式引用自身(将其自身设置为事件处理程序等),您可能更愿意通过其名称(在其中的范围内)引用它.

所以,添加名称的原因:

  1. 如果您正在创建问题中显示的对象,并且您希望函数的实际名称与您使用该函数初始化的属性不匹配.
  2. 如果你正在做obj.foo = function nameHere() { };,你希望函数有一个名称而不是"".
  3. 它将引用自身,并且您希望使用该名称而不是object属性.