作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
这个问题在这里已经有了答案: Is a moved-from vector always empty? (4 个答案) 关闭 4 年前。 从 std::vector move 数据后,它的容量是否必
我是一名优秀的程序员,十分优秀!