2016-05-05 37 views
11

Sto guardando una definizione di classe ES6 e non capisco gli argomenti del costruttore. Ecco la classe:Argomenti costruttore costruttore ES6

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

Sono confuso da questa {size = null,} = {}. È un argomento singolo? Cosa significa?

+2

possibile duplicato di [Dove posso ottenere informazioni sulla sintassi dei parametri dell'oggetto per le funzioni javascript?] (Http://stackoverflow.com/q/10804982/1048572) e [cosa significa (stato = {}) => stato significa] (http://stackoverflow.com/q/35526463/1048572) – Bergi

risposta

10

È un object destructuring con un determinato valore predefinito.

Se si passa un obj come

{ size: true } 

è possibile accedere alla "dimensione" dentro il costruttore come una normale variabile

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

Se non si passa nulla o si passa un oggetto senza "dimensione", le dimensioni saranno nulle. Puoi fare più di questi incarichi. Basta separarli con le virgole.

Esempio:

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

In questo caso, se si passa un oggetto senza proprietà "foo" che sarà indefinito, il resto agisce come ho accennato sopra.

Inoltre vale la pena ricordare che è necessario aggiungere = {} al termine del compito di destrutturazione nella dichiarazione constructor. È nel caso in cui non passi nulla. Altrimenti dovresti passare qualche oggetto (potrebbe essere vuoto).

+0

Beh, non è proprio un compito in questo caso ... – Bergi

+0

@bergi Dovrebbe essere un oggetto destrutturante, giusto? corretto –

Problemi correlati