Perché usare la funzione javascript involucro (aggiunto in CoffeeScript) “.Call (questo)”

StackOverflow https://stackoverflow.com/questions/4542942

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top