从 Object creates/returns new Object 中删除一个键是吗?

Does deleting an key from Object creates/returns new Object?

我需要从一个对象中删除一个 property/key 来比较另一个对象,如下例所示

    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];
        }
    }

我有两个对象 Obj1Obj2。需要比较两个对象并删除 Obj1 中丢失的键。那就是我要从 Obj1.

中删除密钥 c

它按预期工作。 我想知道的是删除后是否为这个 Obj1 创建了新的对象引用或者对象引用相同?

如何找到它?

对象引用是相同的,您只是在修改它(正如评论者所说)。

删除对象属性会更改 VM 生成的底层 class。如果此对象位于热路径上,则会对性能产生重大影响。对象 shape(例如描述的 here)不同,因此 JIT 编译器必须创建一个新的 class 并丢弃旧的并弄乱引用。但除了性能影响之外,它并没有改变我们(js 开发人员)世界中的任何东西。