我需要更改一个不可扩展的对象。有什么解决方法可以更改此对象属性?
我已阅读说明如下的文档 “一旦对象变得不可扩展,就无法使其再次可扩展。”
有没有解决方法?像复制对象或其他东西?
答案 0 :(得分:3)
除了复制对象外,另一种可能性是创建一个新对象,该对象的 prototype 是不可扩展的对象:
const object1 = {
foo: 'foo',
};
Object.preventExtensions(object1);
// We can't assign new properties to object1 ever again, but:
const object2 = Object.create(object1);
object2.bar = 'bar';
console.log(object2);
/* This will create a property *directly on* object2, so that
`object2.foo` refers to the property on object2,
rather than falling back to the prototype's "foo" property: */
object2.foo = 'foo 2';
console.log(object2);
答案 1 :(得分:1)
原型方法很好,但是与克隆相比有一个局限性。 并非所有的迭代机制都会通过原型继承的属性
例如for / in循环很好,但是Object.keys(object2)不会列出任何不会被再次覆盖的继承属性。