我知道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的范围。 –