首页 > 关于js引用类型赋值的问题

关于js引用类型赋值的问题

http.getData().then(function(data) {
                    //填充数据
                    self._allCheckData = data;
                    self._checkedData = data;
                    })

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


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


使用Object.assignMDN

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

同熊丸子
你可以这样

    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);

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

【热门文章】
【热门文章】