2015-09-05 32 views
13

Questo può sembrare ridicolo ma sopportare con me. Mi chiedo se esiste un supporto a livello di linguaggio per destrutturare l'oggetto in proprietà di classe nel costruttore, ad es.ES6 Distruttore in classe costruttore

class Human { 
    // normally 
    constructor({ firstname, lastname }) { 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.fullname = `${this.firstname} ${this.lastname}`; 
    } 

    // is this possible? 
    // it doesn't have to be an assignment for `this`, just something 
    // to assign a lot of properties in one statement 
    constructor(human) { 
     this = { firstname, lastname }; 
     this.fullname = `${this.firstname} ${this.lastname}`; 
    } 
} 
+0

Se si desidera 'fullname' per mantenere le modifiche in' 'firstname' e lastname', utilizzare un getter https: //developer.mozilla. org/it-it/docs/Web/JavaScript/Riferimento/Funzioni/get – Jan

+0

@Jan giusto grazie. Mi dispiace è stato un cattivo esempio. Voglio solo dimostrare che dopo 'firstname' e' lastname' ci sono più inizializzazioni se questo ha senso. –

+0

"questo" non può essere assegnato a - in ES5 mai, in ES6 l'unica cosa che cambia il suo "valore" è 'super()'. Ma per assegnare le proprietà su di esso, vedere il duplicato. – Bergi

risposta

19

Non è possibile assegnare a this in qualsiasi parte del linguaggio.

Una possibilità è quella di fondere in this o un altro oggetto:

constructor(human) { 
    Object.assign(this, human); 
} 
+1

Cheers. So che non possiamo assegnarlo ma speravo in qualcosa di simile. Ero molto interessato all'utilizzo della destrutturazione perché ha uno schema chiaro, cioè mi dice quali proprietà vengono assegnate. Ma comunque, grazie per la risposta. –

+1

O forse hai bisogno di questo? costruttore ({firstname, lastname}) { Object.assign (this, {firstname, lastename}); this.fullname = '$ {this.firstname} $ {this.lastname}'; } – r03

+0

@ r03 hai provato quella soluzione? Funziona davvero? –

Problemi correlati