我不明白为什么我的对象会覆盖另一个冻结的对象,我尝试从先前的对象创建一个新实例,然后冻结它。但是无论如何,即使被冻结它也会覆盖自身
另外,为什么我可以更改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"}
答案 0 :(得分:2)
Object.create()
不会克隆您应使用的对象Object.assign
let obj = {check: "check"};
const check = Object.create(obj);
Object.seal(check);
obj["second"] = "something";
console.log(check)
答案 1 :(得分:0)
Object.create()方法使用现有对象作为新创建的对象的原型来创建新对象。子对象可以访问原型的属性。
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create
如果要克隆对象,则必须使用Object.assign()。