JavaScript命名对象函数

狗男孩

JS的新手,

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

var person = {
    name: "Bob McBobson",
    talk: function descriptiveFunctionName() {alert("Hello");}
};

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

在任何情况下是否需要/有帮助而不是匿名?

TJ人群

在任何情况下是否需要/有帮助而不是匿名?

从ES2015开始,即使您留在那儿,descriptiveFunctionName您的函数也不会是匿名的,它会带有一个名称(talk)。ES2015添加了推断的函数名称name最后属性)。在大多数情况下都可以推断出名称,而没有推断出真正真正重要的唯一地方obj.foo = function() { }(这会使函数使用name "",而不是"foo")。

另外,如果函数将是递归的或以其他方式引用自身(将自身设置为事件处理程序等),则您可能更喜欢按其名称(在其作用域内)进行引用。

因此,添加名称的原因:

  1. 如果要按照问题所示创建对象,并且希望该函数的实际名称与正在使用该函数初始化的属性不匹配。
  2. 如果您正在执行此操作,obj.foo = function nameHere() { };并且希望该函数具有名称而不是""
  3. 它将引用自身,并且您想使用该名称而不是对象属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章