Mi confondo su una situazione di riferimento JavaScript this
.JavaScript si riferisce alla finestra anziché alla funzione oggetto all'interno
Sto lavorando su un codice che dichiaro la funzione all'interno di un metodo oggetto. (Il motivo è di riordinare il codice all'interno di un metodo oggetto, mantenendo le funzioni private del metodo.)
Quello che segue è un esperimento per riprodurre il mio problema.
ho trovato che la funzione this
all'interno greeting
riferisce finestra portata anziché persona portata.
var person = {
nickname: "Makzan",
sayHi: function() {
console.log(this);
var greeting = function() {
console.log(this);
return "Aloha " + this.nickname;
}
console.log(greeting());
}
}
person.sayHi();
(stesso codice in jsfiddle: http://jsfiddle.net/makzan/z5Zmm/)
E questo è il risultato di log in del browser:
> Object
> Window
Aloha undefined
In JS, so che questo di riferimento è difficile. E posso cambiare l'ambito utilizzando il metodo .call
per far funzionare questo codice.
var greeting = (function() {
console.log(this);
return "Aloha " + this.nickname;
}).call(this);
Tuttavia, sono curioso di sapere il motivo per cui per default il this
riferiscono a finestra portata all'interno del saluto metodo?
Grazie in anticipo per tutto il vostro aiuto.
È perché 'greeting' è chiamato senza un contesto. –
Grazie a tutti. Imparo di più su cosa significa "contesto" ora. – Makzan