为了账号安全,请及时绑定邮箱和手机立即绑定

闭包中的this与构造函数中的this指向问题

闭包中的this与构造函数中的this指向问题

慕神8447489 2019-04-13 08:37:03
functionqq(argument){//输出的结果1console.log(this);t=this;b='123';functionaa(){vartt=this;//输出的结果2console.log(tt);o=t;//输出的结果3console.log(o);console.log('run');}returnaa;}三个输出的结果一样,就是说this都指向了全局的window对象了?functionPerson(name,age){this.name=name;this.age=age;}Person.prototype.out=function(){varself=this;//输出的结果4console.log(self);console.log(this.name+':'+this.age);}newPerson('dd',90).out()输出的结果4的,说明原型变量中,this指向父一级对象,如果没有了在继续向上查找吗?闭包内存消耗可以这样理解吗???每一次你去调用,需要把上一级的节点引入,对于内存中栈操作,就是放入一个内存中,并不会自动清除,这样的话,这条引用就一直存在内存中,所以就会一直延伸下去,就会造成内存的消耗
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

this没有向上查找这一说。this是执行上下文环境的一个属性,是从执行上下文里面获得其值,而不是通过作用域链去查找。所以this和作用域链没有半毛钱关系。
不过题主对闭包的理解是OK的。因为如果保存了闭包中的变量,意味着有可能再次使用该变量,从而也就必须记录其作用域链,系统也就无法对闭包的变量和变量所依赖的作用域进行回收。完了就消耗了呗。所以如果要防止内存泄漏,切断对闭包中变量的引用就好。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信