我對JavaScript this
參考情況感到困惑。JavaScript這是指窗口而不是對象內部函數
我正在處理一個代碼,我在對象方法中聲明函數。 (原因是要清理對象方法中的代碼,同時保持函數對該方法是私有的。)
以下是重新生成我的問題的實驗。
我發現裏面this
功能greeting
指的是窗口範圍,而不是人範圍。
var person = {
nickname: "Makzan",
sayHi: function() {
console.log(this);
var greeting = function() {
console.log(this);
return "Aloha " + this.nickname;
}
console.log(greeting());
}
}
person.sayHi();
(在相同的jsfiddle代碼:http://jsfiddle.net/makzan/z5Zmm/)
而且這是在瀏覽器中的日誌結果:
> Object
> Window
Aloha undefined
在JS,我知道,這參考是棘手。我可以通過使用.call
方法來改變這個範圍,使這個代碼有效。
var greeting = (function() {
console.log(this);
return "Aloha " + this.nickname;
}).call(this);
不過,我很好奇地想知道爲什麼默認this
指窗口範圍問候方法裏面?
在此先感謝您的幫助。
它是確定,因爲'greeting'被稱爲沒有上下文。 – 2013-04-05 10:28:51
謝謝大家。我現在瞭解更多關於「背景」的含義。 – Makzan 2013-04-05 10:41:24