在写插件的过程中,遇到这样的一个问题,就是备份对象的问题
描述:
定义两个对象,一个空对象用来备份另一对象的数据,用于初始化处理
说明:
按正常人的思维的话,备份对象就是给一个空对象赋值,用解决1的方法解决不了问题,因为备份的对象的值也会跟着改变
于是,我是想给对象赋值是不是地址赋值?
然后改成解决2的方法,解决了这个问题。
解决1:
<script type="text/javascript">
var obj = {},isInit=false;
var objFun = {
default_:{
color:'red',
0,
height:0
},
show_:function(setObj){
//备份初始值
if(!isInit){
obj=objFun.default_;
}
alert('width='+obj.width+',height='+obj.height);
objFun.default_.width=setObj.width;
objFun.default_.height=setObj.height;
alert('width='+obj.width+',height='+obj.height);
}
};
</script>
<button onclick="javascript:objFun.show_({20,height:30})">button1</button><br />
<button onclick="javascript:objFun.show_({10,height:70})">button1</button><br />
解决2:
<script type="text/javascript">var obj = {},isInit=false;
var objFun = {
default_:{
color:'red',
0,
height:0
},
copy_:function(sArr,dArr){
for(var s in sArr){
dArr[s]=sArr[s];
}
return dArr;
},
show_:function(setObj){
//备份初始值
if(!isInit){
objFun.copy_(objFun.default_,obj);
isInit=true;
}
alert('width='+obj.width+',height='+obj.height);
objFun.default_.width=setObj.width;
objFun.default_.height=setObj.height;
alert('width='+obj.width+',height='+obj.height);
}
};
</script>