2016-07-18 2 views
12

In ES6, c'è un modo per chiamare un costruttore genitore che passa attraverso argomenti variadici, a la foo.apply(this, arguments)? Ho cercato una risposta, e gli unici casi che vedo sono o chiamando super() (senza argomenti) o chiamando super(x, y) (con argomenti specifici). super.apply(this, arguments) non sembra funzionare.ES6 classe super() con argomenti variadici

+0

L'operatore di spread è la migliore applicazione. – Oriol

+0

'super.constructor.apply (this, arguments)' funzionerebbe se 'this' fosse già inizializzato – Bergi

risposta

18

Il modello trovo conveniente e seguo è

constructor(...args) { 
    super(...args); 
} 

Nel caso in cui si dispone di veicoli e sull'uso di nome argomenti si potrebbe fare questo, invece:

constructor(a, b, c) { 
    super(...arguments); 
} 

Riferimenti:

+1

Se si sta utilizzando questo in un browser, sii consapevole del supporto dell'operatore di spread in quanto il supporto è abbastanza nuovo e per qualche motivo il supporto per l'operatore di spread è arrivato più tardi rispetto ad altre funzionalità di ES6 come 'class'. Ad esempio, non penso ci sia alcun supporto IE. Potresti, ovviamente, usare anche un transpiler. – jfriend00

+2

@ jfriend00 IE non supporta quasi nulla da ES2015, quindi, chi se ne frega :-) – zerkms

+3

È facile trovare versioni di Chrome che non sono le più recenti e supportano 'class', ma non supportano l'operatore di spread. Sto solo avvisando l'OP per assicurarmi che abbia il supporto del browser di cui hanno bisogno. Non essere così difensivo. Questa è una bella risposta se il tuo ambiente lo supporta. – jfriend00

Problemi correlati