我需要从一个对象中删除一个属性/键,比较另一个对象,如下例
var Obj1 ={
a : '1',
b : '2',
c : '3',
d : '4'
}
var Obj2 ={
a : '1',
b : '2',
d : '5'
}
for (const key in Obj1) {
if (!Obj2.hasOwnProperty(key)) {
delete Obj1[key];
}
}
我有两个对象Obj1
和Obj2
。需要比较两个对象并删除Obj1
中缺少的密钥。我就是从c
删除密钥Obj1
。
它按预期工作。 我想知道的是,删除后对象引用是否为此Obj1创建了新的Object引用?
如何找到它?
答案 0 :(得分:2)
对象引用是相同的,您只是修改它(如评论者所说)。
删除对象属性会更改VM生成的底层类。如果此对象位于热门路径上,则会对性能产生重大影响。对象 shape (例如描述为here)是不同的,因此JIT编译器必须创建一个新类并抛弃旧类并弄乱引用。但除了性能影响之外,我们(js开发人员)世界并没有改变任何东西。