Почему object перезаписывает другой замороженный объект

#javascript

#javascript

Вопрос:

Я не могу понять, почему мой объект перезаписывает другой замороженный объект, я пытаюсь создать новый экземпляр из моего предыдущего объекта, а затем заморозить его. Но в любом случае, он перезаписывает сам себя, даже если он заморожен
Также, почему я могу изменить свой check объект, если он const
JS действительно странный

У меня есть код ниже

 let obj = {check: "check"};  
const check = Object.create(obj);
Object.freeze(check);
obj["second"] = "something";
// Expected result: obj = {check: "check", second: "something"}
// check = {check: "check"}

// Actual result: obj = {check: "check", second: "something"}
// check = {check: "check", second: "something"}
  

Комментарии:

1. Он не перезаписывает другой объект. check не меняется.

Ответ №1:

Object.create() не клонирует объект, который вы должны использовать Object.assign

 let obj = {check: "check"};  
const check = Object.create(obj);
Object.seal(check);
obj["second"] = "something";
console.log(check)  

Ответ №2:

Метод Object.create() создает новый объект, используя существующий объект в качестве прототипа вновь созданного объекта. Свойства прототипа доступны дочерним объектам.

Источник: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create

Вы должны использовать Object.assign(), если хотите клонировать объект.