stavo leggendo il codice sorgente di Facebook-dati-tavola fissa, e ho trovato thisJavaScript: var {left, ... props} = this.props;
var {left, ...props} = this.props;
Cosa che significa? è questo un nuovo semantico? Sono confuso o.O
stavo leggendo il codice sorgente di Facebook-dati-tavola fissa, e ho trovato thisJavaScript: var {left, ... props} = this.props;
var {left, ...props} = this.props;
Cosa che significa? è questo un nuovo semantico? Sono confuso o.O
È una forma speciale di assegnazione destrutturazione proposed for ES7 (e implementata con impazienza negli strumenti jsx e Babel). Crea due variabili: left
e props
.
left
ha il valore di this.props.left
.
props
è un oggetto con tutte le altre proprietà di this.props
(escluso left
).
Se hai scritto senza destrutturazione che sarebbe simile a questa:
var left = this.props.left;
var props = {};
Object.keys(this.props).forEach(function(key, index){
if (key !== 'left') {
props[key] = this.props[key];
}
}, this);
che è più di un paio di caratteri rasati :-)
Puoi fornire un link per questo tipo di "destrutturazione del riposo"? Almeno per me non funziona a Traceur. –
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-destructuring-assignment (edit: and 12.14.5.4) – FakeRainBrigand
Questo riferimento non descrive la sintassi qui. Descrive una sintassi per l'assegnazione destrutturante che coinvolge gli array, come in 'var [a, ... b] = [1, 2, 3]'. Non ho mai visto la sintassi mostrata qui, il che non vuol dire che non esiste ... –
E 'ES6 assegnazione destrutturazione. – Pointy
possibile duplicato di [Is var {Route, Redirect, RouteHandler, Link} = Router; valido in Javascript?] (http://stackoverflow.com/questions/27136394/is-var-route-redirect-routehandler-link-router-valid-in-javascript) –
@ Qantas94Heavy, non è proprio un duplicato perché l'altro la domanda non menziona il resto destrutturante. – FakeRainBrigand