2016-05-14 13 views
0

Ich lese über die neuen ECMAScript 2015 Funktionen und stolperte über ein Codebeispiel, das für mich unter der Pfeile Überschrift keinen Sinn macht.Verwirrt auf ES6 Objekt Syntax

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

Wie funktioniert printFriends() {... hier? Es ist keine Methode, weil es keinen Doppelpunkt gibt. Es ist keine private Funktion, weil es kein function Schlüsselwort gibt. Was fehlt mir hier?

+0

dass der ES2015 Weg, Methoden in Objektliterale zu definieren. – undefined

+1

Ja, es ist syntaktischer Zucker. Es ist im Wesentlichen das gleiche wie 'printFriends: function() {...'. –

+2

ES2015 zielt darauf ab, die Notwendigkeit der Verwendung der Wortfunktion zu beseitigen. so ist das obige ein einfaches Beispiel für die Definition einer Funktion als Eigenschaft eines Objekts wie vohuman sagte –

Antwort

4

Wie man auf dem MDN lesen können, unterstützt ES2015 Stenografie Objektmethoden zur Definition:

ES5

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

und ES2015 Stenografie:

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

Die printFriends() {.. .} ist eine Abkürzung für die Funktion printFriends() {...} Da printFriends keine Parameter akzeptiert, können Sie anstelle von func einfach() verwenden printFriends.

See mozilla arrow function docs

+0

Seine Frage ist nicht über die Pfeilfunktion, es geht darum, eine Funktion zu definieren, ohne 'Eigenschaft:' davor. – Barmar

+2

es hat nichts mit parameter zu tun, mit oder ohne params funktioniert es gleich –

+0

@NetaMeta brauchst du wirklich nicht das schlüsselwort 'function' in ES6? Oder verstehe ich was @dcooke falsch gesagt hat? – inthenameofmusik