我用一个全局对象,新建其一个属性来引用闭包内创建的对象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()();
添加回答
举报
0/150
提交
取消