改变this指向&闭包特性

Posted rickdiculous

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了改变this指向&闭包特性相关的知识,希望对你有一定的参考价值。

Q:为什么用普通函数时,setTimeout里面的this指向的是window?
//通过保留this的方式,通过闭包的特性去拿this
let _this = this
//...ajax
setTimeout(function(){
_this.age = 14;
//console.log(this); //window
console.log(_this); //xiaohong
},1000);
A:因为setTimeout中的普通函数function(){}是一个回调函数, 我们没有将这个回调函数与任何对象绑定在一起,根据js语法的规则, 属于默认绑定在window对象上, 所以this指向的是window。

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

以上是关于改变this指向&闭包特性的主要内容,如果未能解决你的问题,请参考以下文章