function qq (argument) {
//输出的结果1
console.log(this);
t = this;
b = '123';
function aa()
{
var tt = this;
//输出的结果2
console.log(tt);
o = t;
//输出的结果3
console.log(o);
console.log('run');
}
return aa;
}
三个输出的结果一样,就是说this都指向了全局的window对象了?
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.out=function(){
var self=this;
//输出的结果4
console.log(self);
console.log(this.name+':'+this.age);
}
new Person('dd',90).out()
输出的结果4的,说明原型变量中,this指向父一级对象,如果没有了在继续向上查找吗?
闭包内存消耗可以这样理解吗???
每一次你去调用,需要把上一级的节点引入,对于内存中栈操作,就是放入一个内存中,并不会自动清除,这样的话,这条引用就一直存在内存中,所以就会一直延伸下去,就会造成内存的消耗
this
没有向上查找这一说。this
是执行上下文环境的一个属性,是从执行上下文里面获得其值,而不是通过作用域链去查找。所以this
和作用域链没有半毛钱关系。不过题主对闭包的理解是OK的。因为如果保存了闭包中的变量,意味着有可能再次使用该变量,从而也就必须记录其作用域链,系统也就无法对闭包的变量和变量所依赖的作用域进行回收。完了就消耗了呗。所以如果要防止内存泄漏,切断对闭包中变量的引用就好。