删除对象属性在执行删除操作之前生效
Deleting an object property has effect before the delete action
我有这样的代码:
data["id"] = 0;
console.log(data); // first log
found["test"] = data;
delete data.id;
console.log(data); // second log
其中数据和查找到的是以前创建的对象。
我的控制台打印两次没有"id"属性的数据对象。
如果我将delete替换为:data.id = '';
,控制台将使用空id属性打印两次数据对象。
此外,found["test"]
有一个没有id的对象(或id="的对象,取决于我在哪个实验中)
有人能帮我了解发生了什么吗?
console.log
在捉弄你。变量data
保持不变。变量data
引用的对象正在发生变化。当你点击obejct时,你的日志会显示它的状态,而不是当它被记录时。
这并不是说delete
发生得太早,而是你的浏览器控制台打开对象太晚了。
如果插入一个debugger
语句来暂停执行,您应该看到您期望看到的内容。然后继续执行,该属性将如您所期望的那样被删除。
data["id"] = 0;
console.log(data); // first log
debugger;
// inspect your object now
found["test"] = data;
delete data.id;
console.log(data); // second log
// inspect the object now, the property should be gone
O你可以通过钻入对象来改变你正在记录的内容:
data["id"] = 0;
console.log(data.id); // 0
found["test"] = data;
delete data.id;
console.log(data.id); // undefined
相关文章:
- 删除自执行匿名函数
- 删除对象属性在执行删除操作之前生效
- AngularJS-由$scope创建的作用域何时执行$new()已删除.垃圾收集器或Angular负责处理它吗
- AngularJS和REST:执行删除操作,发送许多要删除的项目的数组
- 在执行漂亮的照片库后从“导航”中删除类“粘性”的错误
- 多次执行 AJAX 请求时删除以前的数据
- HTML 正文加载函数需要删除并使用 cookie 执行相同的函数,但只能进行第一次访问
- 删除对象时执行元素指令动画的角度方式
- 当文本从输入中完全删除时,请执行某些操作
- 使用JQuery'加载HTML;s在一次又一次地删除HTML后多次执行getScript
- 在执行不区分大小写的排序以删除web工作程序中的重复项时,首选大写字母唯一
- 当用户试图删除indexedDB数据库时,是否有方法执行函数
- 按下退格键或删除键时如何执行操作
- 如何在执行ajax请求时删除“_”单个Undercore查询参数
- 如何删除/停止脚本在jquery中执行
- IE9 iframe窗口删除后,将不能执行代码从一个释放的脚本
- jQuery标签-它,如何执行post时,项目删除
- 如何执行功能后,所有的标记已被删除
- 执行删除确认框上单击“删除”
- 有'循环从元素中删除包含类名的类名,否则不执行任何操作