请问下老师关于this指向的问题

来源:3-5 非箭头函数中的 this 指向

kasugan

2021-04-20 15:11:33

相关代码:

​相关代码:    <script>
var a = 11
function test1() {
this.a = 22;
let b = function () {
console.log(this.a);
};
b();
}
var x = new test1();
</script>

老师请问为什么这里的结果是11,而不是22呀

写回答

2回答

好帮手慕言

2021-04-20

同学你好,在同学所提供的代码中,不管是使用let还是使用var定义b,在非严格模式下,b中的this都指向window。祝学习愉快~

1

好帮手慕言

2021-04-20

同学你好,构造函数中的this,指向的是实例化出来的对象,this.a相当于给对象添加了a属性。如下:
http://img.mukewang.com/climg/607e870d0993100d03520116.jpg

http://img.mukewang.com/climg/607e87190944ac7d02880147.jpg

在代码中,非严格模式下,函数b中的this指向window,全局中定义了a的值为11,所以this.a访问的是window上的a属性,打印的值为11。

祝学习愉快~


1
hasugan
hp>老师那还想请问一下,在非严格模式下,构造函数中使用(var\let)声明的函数都像函数b这样,this指向window?是不是记住即可呀。

h021-04-20
共1条回复

0 学习 · 15276 问题

查看课程