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

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

相关代码:

​相关代码:    <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回答

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

好帮手慕言 2021-04-20 15:49:36

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

http://img1.sycdn.imooc.com//climg/607e87190944ac7d02880147.jpg

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

祝学习愉快~


  • 提问者 kasugan #1

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

    2021-04-20 16:07:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师