关于this指向

来源:5-6 箭头函数

hyperse

2020-06-20 00:50:41

为什么用普通函数时,setTimeout里面的this指向的是window呀?好像第二部分课程有,但是不记得是哪一课了。。

//通过保留this的方式,通过闭包的特性去拿this
					let _this = this
					//...ajax
					setTimeout(function(){
						_this.age = 14;
						//console.log(this);  //window
						console.log(_this);  //xiaohong
					},1000);

通过闭包的特性又该怎么理解。。

写回答

1回答

好帮手慕慕子

2020-06-20

同学你好,对于你的问题解答如下:

  1. 因为setTimeout中的普通函数function(){}是一个回调函数, 我们没有将这个回调函数与任何对象绑定在一起,根据js语法的规则, 属于默认绑定在window对象上, 所以this指向的是window

  2. 闭包的特性就是在一个函数中, 可以访问到另一个函数作用域中变量。 示例:在setTimeout的回调函数中, 访问到getAge的局部变量_this

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 10739 问题

查看课程