Perché usare la funzione javascript involucro (aggiunto in CoffeeScript) “.Call (questo)”
-
13-10-2019 - |
Domanda
Quando uso l'ultima (1.0) il rilascio di caffè-script, un semplice aspetto di uscita javascript come questo (per impostazione predefinita):
(function() {
var a;
a = 1;
}).call(this);
Che cosa significa .Call (questo) fare e quale sarebbe il motivo per aggiungerlo?
Soluzione
E 'la creazione di una funzione e poi si fa chiamare con la funzione di genitore / oggetti portata.
.Call e .Applicare sono diversi metodi di chiamando una funzione. Che, fondamentalmente creato una funzione che non fa nulla se non insieme a = 1 all'interno del proprio campo di applicazione.
In Javascript è necessario rendersi conto che ogni funzione è un oggetto, e this
è quello che si riferisce all'oggetto / funzione corrente. Utilizzando .call(this)
this
le sostituzioni all'interno della funzione e lo sostituisce con quello del contesto è stata chiamata.
Altri suggerimenti
E 'un modo per assicurarsi che il CoffeeScript compilato dispone di un proprio spazio per i nomi delle variabili. Questo ha benefici in termini di efficienza e semplicità (si si conosce il JavaScript generato non calpestare sulle variabili utilizzate da altro codice). È possibile disattivare con l'opzione --bare
(o -b
) al compilatore CoffeeScript.
La ragione per la call(this)
è solo per garantire che il CoffeeScript ha la stessa this
come ambito in cui è collocato, in quanto le funzioni normalmente non ereditano oggetto this
dal contesto circostante.