这是我的代码
const x = {
a() {
console.log("a");
},
b: function() {
console.log("b");
},
};
a
和b
函数之间有区别吗?
我在某处读到,创建方法的a() {}
方法更短,但是会带来很多问题。
仅在确定不会使用递归或将函数传递给事件处理程序的情况下,才使用它。
这是真的吗?
答案 0 :(得分:4)
唯一的区别是a
被定义为method,这意味着它不能用new
实例化:
const x = {
a() {
},
b: function() {
}
};
new x.b();
new x.a();
一个微不足道的区别是,在草率模式下,该方法的内部原型具有arguments
和caller
属性,而函数在函数上具有这些属性对象本身:
const x = {
a() {
},
b: function() {
}
};
console.log(x.a.hasOwnProperty('arguments'), x.a.hasOwnProperty('caller'));
console.log(x.b.hasOwnProperty('arguments'), x.b.hasOwnProperty('caller'));
在严格模式和方法定义中,禁止访问这些属性。它们已弃用。