window.identity = "The Window"
let object = {
identity: "My Object",
testThis: this.identity,
getIdentityFunc7() {
function innerFunction() {
console.log(this.identity)
}
innerFunction()
},
}
object.getIdentityFunc7() // The Window
标准函数中,this引用把函数当成方法调用的上下文对象,所以我认为这个innerFunction函数中的this应该引用的是getIdentityFunc7的这个对象。
但是事实确实this引用的window,这是为什么呢?
呃, 这里就是无上下文啊.
在
getIdentityFunc7
这里是有上下文this, 在内部定义的function
是找不到上下文的,根据
this
的绑定优先级最终会找到全局对象window
.可以去找找关于this的绑定规则
new绑定 > 显示绑定 > 隐式绑定 > 默认绑定