码迷,mamicode.com
首页 > 其他好文 > 详细

改变this指向&闭包特性

时间:2020-06-21 09:24:37      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:另一个   get   局部变量   this   pre   保留   OLE   对象   语法   

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指向&闭包特性

标签:另一个   get   局部变量   this   pre   保留   OLE   对象   语法   

原文地址:https://www.cnblogs.com/rickdiculous/p/13171129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!