在这里做了一场彻头彻尾的噩梦,努力向自己解释为什么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"
this
Javascript中的判断规则按优先顺序:
new
,例如var a = new method()
,导致this
成为一个新的空对象。call
、apply
或bind
,导致this
成为使用的上下文(例如method.call(y)
,将导致this
成为y
)x.method()
会导致this
be x
)this
,如果不满足其他规则,则默认为全局对象。在严格模式下,this
将是未定义的。