【发布时间】:2016-01-27 16:10:52
【问题描述】:
看看这个例子:
function aaa () {
console.dir(this)
}
function bbb () {}
aaa.apply(undefined, [1,2,3]) // this in aaa is `window` object
aaa.apply(bbb, [1,2,3]) // this in aaa is `bbb` function
为什么this 在第一个应用案例中设置为window,即使我试图强制它为undefined?
【问题讨论】:
-
因为你的函数处于草率模式。
-
非“严格模式”。在
console.dir之前添加"use strict";,它将显示undefined。 -
从未听说过严格模式,谢谢。我查一下。
-
@bodacydo - 强烈建议您阅读并了解严格模式以及与非严格模式的区别,然后开始将其用于所有代码。严格模式会将一些编码错误转化为即时错误,因此您可以立即看到并修复它们,而不是试图掩盖它们。
标签: javascript this apply window-object