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>

  • 相关阅读:
    SQL数据库inner join ,join,left join,full join(转)
    CSRF攻击(转)
    BZOJ1853: [Scoi2010]幸运数字
    BZOJ1935: [Shoi2007]Tree 园丁的烦恼
    BZOJ3289Mato的文件管理
    树状数组
    莫队算法
    如何在win上用Linux编c++
    Hash的应用
    关于指数循环节的证明
  • 原文地址:https://www.cnblogs.com/wangjie-001/p/6129941.html
Copyright © 2011-2022 走看看