困惑于ES6对象语法

时间:2016-05-14 22:45:01

标签: javascript object ecmascript-6

我正在阅读有关新ECMAScript 2015功能的内容,并且遇到了一个代码示例,该示例在箭头标题下对我没有意义。

// Lexical this
var bob = {
  _name: "Bob",
  _friends: [],
  printFriends() {
    this._friends.forEach(f =>
      console.log(this._name + " knows " + f));
  }
}

printFriends() {...如何在这里运作?它不是一种方法,因为没有冒号。它不是私人功能,因为没有function关键字。我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

正如您在MDN上所看到的,ES2015支持定义对象方法的简写:

ES5

var obj = {
  foo: function() {},
  bar: function() {}
};

和ES2015的简写:

var obj = {
  foo() {},
  bar() {}
};

答案 1 :(得分:0)

printFriends(){...}是函数printFriends(){...}的简写 因为printFriends不接受任何参数,你可以使用()代替printFriends函数。

See mozilla arrow function docs