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

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

明月笑刀无情

this没有向上查找这一说。this是执行上下文环境的一个属性,是从执行上下文里面获得其值,而不是通过作用域链去查找。所以this和作用域链没有半毛钱关系。不过题主对闭包的理解是OK的。因为如果保存了闭包中的变量,意味着有可能再次使用该变量,从而也就必须记录其作用域链,系统也就无法对闭包的变量和变量所依赖的作用域进行回收。完了就消耗了呗。所以如果要防止内存泄漏,切断对闭包中变量的引用就好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript