javascript - 闭包中的this与构造函数中的this指向问题
ringa_lee
ringa_lee 2017-04-10 15:39:14
[JavaScript讨论组]
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指向父一级对象,如果没有了在继续向上查找吗?

闭包内存消耗可以这样理解吗???

每一次你去调用,需要把上一级的节点引入,对于内存中栈操作,就是放入一个内存中,并不会自动清除,这样的话,这条引用就一直存在内存中,所以就会一直延伸下去,就会造成内存的消耗

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
ringa_lee

this没有向上查找这一说。this是执行上下文环境的一个属性,是从执行上下文里面获得其值,而不是通过作用域链去查找。所以this和作用域链没有半毛钱关系。

不过题主对闭包的理解是OK的。因为如果保存了闭包中的变量,意味着有可能再次使用该变量,从而也就必须记录其作用域链,系统也就无法对闭包的变量和变量所依赖的作用域进行回收。完了就消耗了呗。所以如果要防止内存泄漏,切断对闭包中变量的引用就好。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号