我知道this
變量指的是在全局對象(在瀏覽器的情況下,窗口)或包含它的對象(如果在對象的方法是使用),除非它有不同的規定(例如使用綁定方法)。哪裏「這個」變量是指在javascript
現在,我有以下示例:
//define an object
var obj = {
param: 'Luciano',
bar: function() {
console.log('"this" inside method: ' + this);
return this;
}
};
var a = obj.bar();
console.log(a);
//
var b = obj.bar;
console.log(b());
的輸出是:
「這個」 內部方法:[對象的對象]
對象{PARAM:「 Luciano「}
」this「裏面的方法:[object Window]
窗口{...}
我可以理解爲什麼在var a = obj.bar()
的這個變量指向的情況下到obj
對象。可能有人給我解釋一下,請(在執行方面上下文和作用域鏈)爲什麼在var b = obj.bar
情況下this
變量等於window
對象?我預計也會等於obj
。
那是,如果你執行函數沒有上下文的背景下將是窗口對象或undefined,如果在嚴格模式下運行JavaScript是如何工作的。 – jcubic
投票重新開放。這不是重複的。儘管它確實解決了類似的問題,但它實際上是在不用'()'使用''時沒有將上下文綁定到'bar'函數。簡單的答案是「因爲事情就是這樣」,但至少需要一些解釋。 – freakish
我會強烈建議在看這個:https://www.youtube.com/watch?v=nRZri_CHqnA瞭解JavaScript的範圍。 –