我想重新定义一个类中的现有属性(这是为了实验,我知道我不应该)。
出于某种原因,以下代码在浏览器(Chrome)中有效,但在Node.js(v18.12.0)中无效。
function re(instance, name, val){
let _value = val;
Object.defineProperty(instance, name, {
get: () => { return _value },
set: (v) => { return _value = v }
})
return val;
}
class A {
prop = re(this, 'prop', 456)
}
const a = new A()
console.log(a.prop)
Chrome控制台输出将是456
,但节点将像nope,今天没有重新定义,而是这样:TypeError: Cannot redefine property: prop
。这很可悲。我在我的PC Plus上测试了一些在线NodeJS解释器(Replitidercom)。
1条答案
按热度按时间wlsrxk511#
您需要提供
configurable
属性。您可以在这里参考MDN文档。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_redefine_property