zoukankan      html  css  js  c++  java
  • 对象引用带来的问题解决

    对象之间存在引用关系,有时候会造成麻烦,我们现在来解决一下
    对象和函数都存在引用关系
    例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>

  • 相关阅读:
    linux所有命令失效的解决办法
    第一章 网络基础知识
    RNQOJ 数列
    RNQOJ Jam的计数法
    RNQOJ 开心的金明
    RQNOJ 明明的随机数
    分类讨论的技巧
    Unity 碰撞检测
    Unity --yield return
    Unity 移动方式总结
  • 原文地址:https://www.cnblogs.com/wangjie-001/p/6129941.html
Copyright © 2011-2022 走看看