方法定义和对象的函数属性之间的区别

时间:2019-10-12 00:15:56

标签: javascript

这是我的代码

const x = {
    a() {
      console.log("a");
    },
    b: function() {
      console.log("b");
    },

};

ab函数之间有区别吗?

我在某处读到,创建方法的a() {}方法更短,但是会带来很多问题。

仅在确定不会使用递归或将函数传递给事件处理程序的情况下,才使用它。

这是真的吗?

1 个答案:

答案 0 :(得分:4)

唯一的区别是a被定义为method,这意味着它不能用new实例化:

const x = {
  a() {
  },
  b: function() {
  }
};

new x.b();


new x.a();

一个微不足道的区别是,在草率模式下,该方法的内部原型具有argumentscaller属性,而函数在函数上具有这些属性对象本身:

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'));

在严格模式和方法定义中,禁止访问这些属性。它们已弃用。

相关问题