gpt4 book ai didi

javascript - 删除对象上的字段,然后删除从中克隆的对象上的字段

转载 作者:行者123 更新时间:2023-11-30 20:23:54 25 4
gpt4 key购买 nike

我正在使用 javascript 代理,在 set trap 中,我想将数据发送到服务器,但我不想发送不需要的额外数据,所以我尝试删除我发送的对象如下所示。

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) 克隆的对象上的字段,之后我仍然需要该字段。是否有某些我没有看到的东西可能以意想不到的方式影响原始对象?

最佳答案

好的,感谢 Isaac,我查阅了深度复制与浅层复制的对比,并找到了正确的代码来使用

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

相对于:

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

关于javascript - 删除对象上的字段,然后删除从中克隆的对象上的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51128049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com