改变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指向&闭包特性的主要内容,如果未能解决你的问题,请参考以下文章
js闭包中的this(匿名函数中的this指向的是windows)