Удаляет ли ключ из Object новый / возвращает новый Object?

Мне нужно удалить свойство / ключ из одного объекта, сравнивая другой, как в примере ниже

    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,

Это работает, как ожидалось. Меня интересует, создается ли новая ссылка на объект для этого объекта после удаления или же ссылка на объект такая же?

Как найти это?

1 ответ

Решение

Ссылка на объект такая же, вы просто модифицируете ее (как говорит комментатор).

Удаление свойств объекта изменяет базовый класс, созданный виртуальной машиной. Если этот объект находится на "горячем пути", это имеет значительные последствия для производительности. Форма объекта (например, описанная здесь) отличается, поэтому JIT-компилятор должен создать новый класс, отказаться от старого и связываться со ссылками. Но кроме влияния на производительность, это ничего не меняет в нашем мире (разработчиков).

Другие вопросы по тегам