在这里做了一场彻头彻尾的噩梦,努力向自己解释为什么this是window对象?
(function () {
function get () {
alert(this);
}
get();
})();
我的理解是函数在 JS 中创建了作用域,为什么 this 指的是window对象?
在这里做了一场彻头彻尾的噩梦,努力向自己解释为什么this是window对象?
(function () {
function get () {
alert(this);
}
get();
})();
我的理解是函数在 JS 中创建了作用域,为什么 this 指的是window对象?
因为这就是 JavaScript 的工作方式,除非是严格模式。
this除非window您显式调用不同对象的方法。您发布的代码get是在没有明确调用的情况下调用的this,因此它是在window.
x.method() // "this" will be "x"
method() // "this" will be "window"
thisJavascript中的判断规则按优先顺序:
new,例如var a = new method(),导致this成为一个新的空对象。call、apply或bind,导致this成为使用的上下文(例如method.call(y),将导致this成为y)x.method()会导致thisbe x)this,如果不满足其他规则,则默认为全局对象。在严格模式下,this将是未定义的。