对象引用带来的问题解决

 

对象之间存在引用关系,有时候会造成麻烦,我们现在来解决一下
对象和函数都存在引用关系
例1:
var a = 1;
var b = a;
b=9;
alert(a) // 1
alert(b) // 9
没问题 a 赋给 b
但是b 又重新赋值了。

例2:
var a = [1,2,3];
var b = a;
b.push(4);

alert(b) //1,2,3,4
alert(a) //1,2,3,4

 

<script>
// = 浅拷贝
// =
// =
// var fass = {
// a:10,
// b:'str'
// };
// //复制函数,不存在引用
// function capy(obj){//浅拷贝
// var json = {};
// for(var name in json){
// json[name] = obj[name];
// }
// return json;
// }
// var obj1 = capy(fass);
// //var obj1 = fass;直接引用的话会受到影响
// obj1.a = 20;
//
// alert(fass.a);//10
// =
// =
// =

//深拷贝
//使用知识点: 递归
var json = {
a:{"b":10},
b:{"c":"str"}
}

//var json2 = json;
function deepCapyy(obj){
if(typeof obj!='object'){return false}
var json1 = {};
for(var name in obj){
json1[name]=deepCapyy(obj[name]);
}
return json1;
}
var json2 = deepCapyy(json);
json2.a.b=20;
alert(json.a.b);


</script>

转载于:https://www.cnblogs.com/wangjie-001/p/6129941.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值