我到处读到,在设置严格模式时,在全局执行上下文中使用严格 this
,将具有值undefined
。也就是说,简单地说,this
它不会有值窗口,只有未定义。
但我发现这并不完全正确:
'use strict'
let object = {
f: function () {
console.log(this);
},
r: this
}
object.f(); //object
console.log(object.r); //window
function func() {
console.log(this); //undefined
}
func();
访问对象的 r 属性时显示窗口。为什么?那么,为什么在下面的函数示例中,它显示的不是窗口,而是未定义?
如果在函数内部使用该值
this
取决于严格模式,就像在func()
您的代码中一样。window
在全局上下文中的函数之外,无论模式如何,这都是全局对象(在浏览器中)。您
this
在代码中的对象创建文字中使用的内容不会改变任何内容。let object = { r: this }
- 此处与全局上下文中this
的相同。console.log(this)
例如,请参见:全局上下文: