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

JS闭包相关 闭包内创建的对象如何获取?

JS闭包相关 闭包内创建的对象如何获取?

泛舟湖上清波郎朗 2019-02-19 17:12:25
我用一个全局对象,新建其一个属性来引用闭包内创建的对象function fun(){    return function(){        var obj1={            a:1,            b:2        };        obj2.item=obj1;    }}var obj2={};fun();console.log(obj2.item.a);结果显示 Cannot read property 'a' of undefined请问这样获取闭包内对象的方式错在哪?闭包内对象会自动释放吗?如果会自动释放,为什么?谢谢第二个问题var testButton1=document.getElementById("testButton1");var testButton2=document.getElementById("testButton2");testButton1.onclick=fun_1;testButton2.onclick=fun_2;function fun_1(){        var obj1={        a:1,        b:2    };    obj2.item=obj1;    }function fun_2(){    console.log(obj2.item.a);}var obj2={};结果也显示Cannot read property 'a' of undefined 是为什么
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

匿名函数没有调用,局部变量调用后失效,闭包可以保持变量在内存中不被回收


       function fun(){

    return  (function(){

        var obj1={

            a:1,

            b:2

        };

        obj2.item=obj1;

    })();

}

或者


       function fun(){

    return  function(){

        var obj1={

            a:1,

            b:2

        };

        obj2.item=obj1;

    };

}

fun()();


查看完整回答
反对 回复 2019-02-25
  • 1 回答
  • 0 关注
  • 397 浏览
慕课专栏
更多

添加回答

举报

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