如何使只读属性在Javascript中变为可写?

如何使只读属性在Javascript中变为可写?,javascript,reflection,google-chrome-extension,properties,prototype,Javascript,Reflection,Google Chrome Extension,Properties,Prototype,我正在尝试将对象的属性设置为可写。 它是一个复杂的第三方对象,所以我无法为它创建构造函数 到目前为止,我试过这样的方法。我还有别的方法可以做到吗 我试图替换原型中的属性,并为此创建一个包装器,但“setter”在运行时未定义 var originalProperty = Object.getOwnPropertyDescriptor(TheObjectClass.prototype, 'theProperty'); delete TheObjectClass.p

我正在尝试将对象的属性设置为可写。 它是一个复杂的第三方对象,所以我无法为它创建构造函数

到目前为止,我试过这样的方法。我还有别的方法可以做到吗

我试图替换原型中的属性,并为此创建一个包装器,但“setter”在运行时未定义

var originalProperty = Object.getOwnPropertyDescriptor(TheObjectClass.prototype, 'theProperty');                

delete TheObjectClass.prototype.theProperty;        

//the following is pseudo(is it?) code: 
Object.defineProperty(TheObjectClass.prototype, 'theProperty', {
    get: function() {return originalProperty.get.call(this);},
    set: function(val) {originalProperty.set.call(this,val);}
});
有没有人对如何实现这个想法有一个有趣的想法

顺便问一下,如果可以隔离这样的属性,使用“call”或“apply”是否正确?正确的方法是什么


PS:如果有必要的话,我正在Chrome扩展中尝试这个功能。

你说的“非法”是什么意思?而且,
object.prototype
看起来很可疑-这不是访问对象的原型链的方式。构造函数有
prototype
属性,但没有实例。“非法调用”是我从尝试中得到的错误消息。我已经习惯于做原型了。“TheObject”不是一个实例。所以“TheObject”不是一个对象实例,而是一个对象构造函数?@Daniel当然不是。对于只读属性,您希望使用什么setter?