2016-05-14 185 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