javascript - 关于JS对象克隆的问题
阿神
阿神 2017-04-10 15:03:08
[JavaScript讨论组]
js  var foo1 = function (a) {
        var b = $.extend({},a);

        console.log(JSON.stringify(a));
        console.log(JSON.stringify(b));
        b.d=3;
        console.log(JSON.stringify(a));
        console.log(JSON.stringify(b));

    };
执行输出
foo1({d:1})
{"d":1}
{"d":1}
{"d":1}
{"d":3}
js  var foo2 = function (a) {
        var b = $.extend({},a);

        console.log(JSON.stringify(a));
        console.log(JSON.stringify(b));
        b.d.c=3;
        console.log(JSON.stringify(a));
        console.log(JSON.stringify(b));

    };
执行输出
foo2({d:{c:1}})
{"d":{"c":1}}
{"d":{"c":1}}
{"d":{"c":3}}
{"d":{"c":3}}

为什么foo2克隆之后对b的修改会影响到a的值,而foo1里面却不会?

阿神
阿神

闭关修行中......

全部回复(2)
迷茫

@公子 正解,深浅拷贝的问题,此处必须用深拷贝

伊谢尔伦

第一种情况下你的d值是基本类型
第二种情况下你的d值是对象

对象传递的是引用

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号