业力:试图分配给只读 属性
Karma: Attempted to assign to readonly property
我扩展全局对象:
Object.defineProperty(Object.prototype,'getRecursive', {writable: false, value: function(keyChain){
var keys = keyChain.split('.');
if(keys.length > 1){
var currentKey = keys[0];
keys.splice(0, 1);
return this.getRecursive.call(this[currentKey], keys.join('.'));
}
return this[keys[0]];
}});
当我 运行 测试时,我有:TypeError: Attempted to assign to readonly property.
在 node_modules/karma-jasmine/lib/adapter.js
。
当我将writable
更改为true
时,错误消失了,为什么?
value
上的函数是 属性 的默认值,writable
应该 allow/deny 更改此值,我错了吗?
如 Object.defineProperty() 文档中所述 writable
定义定义的 属性 是否可以使用赋值运算符进行修改。
When the writable property attribute is set to false, the property is
said to be “non-writable”. It cannot be reassigned.
在严格模式下,这将导致 TypeError
如您所述被抛出。
我不确定在 node_modules/karma-jasmine/lib/adapter.js
的哪一行抛出错误,但您可能会在那里发现不允许的重新分配,因为 getRecursive
属性 被标记为不可写。
我扩展全局对象:
Object.defineProperty(Object.prototype,'getRecursive', {writable: false, value: function(keyChain){
var keys = keyChain.split('.');
if(keys.length > 1){
var currentKey = keys[0];
keys.splice(0, 1);
return this.getRecursive.call(this[currentKey], keys.join('.'));
}
return this[keys[0]];
}});
当我 运行 测试时,我有:TypeError: Attempted to assign to readonly property.
在 node_modules/karma-jasmine/lib/adapter.js
。
当我将writable
更改为true
时,错误消失了,为什么?
value
上的函数是 属性 的默认值,writable
应该 allow/deny 更改此值,我错了吗?
如 Object.defineProperty() 文档中所述 writable
定义定义的 属性 是否可以使用赋值运算符进行修改。
When the writable property attribute is set to false, the property is said to be “non-writable”. It cannot be reassigned.
在严格模式下,这将导致 TypeError
如您所述被抛出。
我不确定在 node_modules/karma-jasmine/lib/adapter.js
的哪一行抛出错误,但您可能会在那里发现不允许的重新分配,因为 getRecursive
属性 被标记为不可写。