JavaScript对象中不同的函数声明之间有什么区别(如果有的话)?

Oll*_*lie 5 javascript ecmascript-6

我有一个JavaScript对象:

var methods = {

  classStyle() {
    console.log('Class style function');
  },

  traditionalStyle: function() {
    console.log('Traditional style function');
  },

  arrowStyle: () => {
    console.log('Arrow style function');
  }

};

methods.classStyle();
methods.traditionalStyle();
methods.arrowStyle();
Run Code Online (Sandbox Code Playgroud)

输出如预期:

(index):70 Class style function
(index):74 Traditional style function
(index):78 Arrow style function
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这些不同的宣告方法之间是否有任何区别?
  2. 这取决于个人喜好吗?或者内部运作会改变吗?
  3. 使用不同风格时是否需要考虑?

Mic*_*ski 5

"类样式函数"(简写方法)与常规函数非常相似.唯一的区别是它不能用作构造函数(即调用new),因此它没有prototype属性.至于箭头函数,请参阅箭头函数与函数声明/表达式:它们是等效/可交换的吗?.简而言之,箭头功能不绑定自己的thisarguments,并且不能与使用new.

这取决于个人喜好吗?或者内部运作会改变吗?

在ES6 +中,没有理由在对象中使用传统的函数语法,因为简写方法语法更简单,更安全,因为如果您不小心尝试使用方法作为构造函数,则会出现错误.对于箭头函数,只有在不需要使用对象时才能使用它们this.