• 对象引用带来的问题解决


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

  • 相关阅读:
    vb.net FTP上传下载,目录操作
    vb.net导出CSV文件
    服务器内存总量
    定义数组
    监控键盘健代码
    C# FTp 上传,下载
    使用EasyUI中Tree
    微信web开发自定义分享
    mysql将时间戳格式化
    查询表时给字段赋默认值 sql
  • 原文地址:https://www.cnblogs.com/wangjie-001/p/6129941.html
Copyright © 2020-2023  润新知