以下代码只会为 name
属性抛出错误。
它可以通过在 Object.create
参数中将 name
属性指定为可写来修复,但是我试图理解为什么会这样(也许有一种更优雅的方法来修复它)。
var BaseClass = function (data) {
Object.assign(this, data);
}
var ExtendedClass = function () {
BaseClass.apply(this, arguments);
}
ExtendedClass.prototype = Object.create(BaseClass);
console.log(new ExtendedClass({ type: 'foo' }));
new ExtendedClass({ name: 'foo' });
最佳答案
如果您在 Angular+Typescript+NgRX 中遇到此错误:
您可以使用扩展运算符获取只读对象的浅拷贝以使其可读,但根据您的情况,您可能不希望这样做。
let x = [...y];
如果您使用的是 Redux/NgRX,您的选择器可能会返回一个带有对商店的引用的只读对象,这可能会在尝试通过模板绑定(bind)更改该对象属性时引发异常。根据您的情况,您可以进行深层复制以删除商店引用。
let x = JSON.parse(JSON.stringify(y));
关于javascript - 无法分配给对象 'name' 的只读属性 '[object Object]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288164/