2016-05-14 137 views
0

我在阅读关于新ECMAScript 2015的功能,并且遇到了一个代码示例,该代码示例在箭头标题下无效。对ES6对象语法感到困惑

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

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

+0

这就是定义对象文字中方法的ES2015方式。 – undefined

+1

是的,它是句法糖。它与'printFriends:function(){...'基本相同。 –

+2

ES2015旨在消除使用单词功能的需要。所以上面是一个简单的例子,将一个函数定义为一个对象的属性,就像vohuman所说的 –

回答

4

正如你可以在MDN读,ES2015支持速记用于定义对象的方法:

ES5

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

和ES2015速记:

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

的printFriends(){.. 。}是函数printFriends(){...}的简写形式 由于printFriends不接受任何参数,因此您可以使用()代替func打印朋友。

See mozilla arrow function docs

+0

他的问题不是关于箭头函数,而是关于定义一个没有'property:'的函数在它之前。 – Barmar

+2

它与参数无关,带或不带参数它的工作原理相同 –

+0

@NetaMeta你真的不需要ES6中的关键字'function'吗?或者我理解@dcooke说错了什么? – inthenameofmusik