javascript - 关于js引用类型赋值的问题
大家讲道理
大家讲道理 2017-04-10 16:56:54
[JavaScript讨论组]
http.getData().then(function(data) {
                    //填充数据
                    self._allCheckData = data;
                    self._checkedData = data;
                    })

在后面会改变其中某一个checkData,然后两个值便一起改了,应该怎么解决呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(4)
大家讲道理

可能是指向了同一个对象,你后续的操作其实操作的是同一个指向。
解决方法,可以克隆一份data给另外个属性。

黄舟

使用Object.assignMDN

http.getData().then(function(data) {
                    //填充数据
                    self._allCheckData = data;
                    self._checkedData = Object.assign({}, data); // 要加一些合法性判断
                    })
ringa_lee

同熊丸子
你可以这样

    var clone = function(o) {
        var r = {};
        for (var p in o) {
            if (o.hasOwnProperty(p)) {
                if(typeof o[p] == 'object'){
                    r[p] = clone(o[p]);
                } else {
                    r[p] = o[p];
                }
            }
        }
        return r;
    };
    
    var a = clone(data);
怪我咯

对象数据类型是一个引用,指向的内存中的真实对象

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

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