删除对象上的字段,然后删除从中复制对象的对象上的字段

时间:2018-07-02 00:52:09

标签: javascript

我使用的是JavaScript代理,并且在设置陷阱中希望将数据发送到服务器,但是我不想发送不需要的额外数据,因此我尝试删除我要发送的对象,如下所示。

let handler = function(data){
const SAVE_DELAY = 850;
return {
    set:function(target, key, value){
        let sendData = Object.assign({},data);
        sendData[key] = Object.assign({}, value);

        function updateTarget() {
            if(!target.__isupdating){
                if(target.__updateTimeout){
                    clearTimeout((target.__updateTimeout));
                }
                target.__updateTimeout = setTimeout(() => {
                    target.__isupdating = true;
                    delete target.__updateTimeout;
                    for (var i in sendData.field) {
                        if (sendData.field[i].field_to_delete) {
                            delete sendData.field[i].field_to_delete;
                        }
                    }
                    ajaxCall("/api_endpoint",
                    sendData,
                    function (response) {
                        target.__isupdating = false;
                        if(response.data){
                            // Update was success 
                        }
                    },
                    function(error){
                        console.log("Error updating! ",error);
                    })
                },SAVE_DELAY);
            }
        }
        updateTarget();
        return true;
    }
};
}

执行此删除操作后,我丢失了从(value)复制对象的字段,此后我仍然需要该字段。我没有看到可能以意想不到的方式影响原始对象的东西吗?

1 个答案:

答案 0 :(得分:1)

好的,感谢艾萨克,我查找了深层复制与浅层复制,并能够找到要使用的正确代码

sendData[key] = JSON.parse(JSON.stringify(value));

相对于:

sendData[key] = Object.assign({}, value);