2016-05-05 7 views
11

Ich schaue mir eine ES6-Klassendefinition an und verstehe die Argumente für den Konstruktor nicht. Hier ist die Klasse:ES6-Klassenkonstruktorargumente

export class Modal { 
    constructor($modal, {size = null,} = {}) { 
     // stuff 
    } 
} 

Ich bin von diesem {size = null,} = {} verwirrt. Ist das ein einziges Argument? Was heißt das?

+2

mögliche Duplikate von [Wo kann ich Informationen über die Syntax der Objektparameter für JavaScript-Funktionen erhalten?] (Http://Stackoverflow.com/q/10804982/1048572) und [was bedeutet (state = {}) => bedeutet] (http://stackoverflow.com/q/35526463/1048572) – Bergi

Antwort

10

Es ist ein object destructuring mit einem vorgegebenen Standardwert.

Wenn Sie übergeben ein obj wie

{ size: true } 

Sie die „Größe“ in der Konstruktor wie eine normale Variable

export class Modal { 
    constructor($modal, {size = null } = {}) { 
    console.log(size); // prints the size value from the given object 
    } 
} 

zugreifen Wenn Sie nichts passieren kann oder übergeben Sie ein Objekt Ohne "Größe" ist die Größe Null. Sie können mehr solcher Zuordnungen vornehmen. Trennen Sie sie einfach durch Kommas.

Beispiel:

constructor($modal, { size = null, foo, bar = "test" } = {}) 

In diesem Fall, wenn Sie ein Objekt ohne Eigentum „foo“ übergeben Sie es nicht definiert wird, wirkt der Rest, wie ich oben erwähnt.

Es ist auch erwähnenswert, dass Sie = {} am Ende der Destrukturierung Aufgabe in der constructor Deklaration hinzufügen müssen. Es ist in dem Fall, wenn Sie nichts weitergeben. Andernfalls müssten Sie ein Objekt übergeben (möglicherweise leer).

+0

Nun, es ist nicht wirklich eine Aufgabe in diesem Fall ... – Bergi

+0

@bergi Es sollte ein Objekt Destrukturierung sein, oder? Korrigiert –