<div style="width: 100px; height: 100px; background:#ccc;" onclick="obj.a()"></div>
<div style="width: 100px; height: 100px; background:#ccc;" onclick="a()"></div>
<script>
let obj = {
a(){
alert(this)
function b(){
alert(this)
}
b()
},
}
function a(){
alert(this)
function b(){
alert(this)
}
b()
}
</script>
为什么调用属性方法的时候 a里面的b函数this指向了window,而调用函数的时候a和b都指向window
函数体内的this。由是谁调用的来决定~
obj.a
里面的this
为objwindow.b()
,所以b中this
为window。另:由于函数b中无闭包,执行完即释放。箭头函数
,则会继承外层函数a的this, 此时b中this
会为awindow.a()
,同理。window.a
测验