在我正在开发的项目中,我正在使用Object.defineProperty
在某些属性上定义getter和setter方法,以便处理解析数据的特定情况。例如:
module.exports = function() {
Object.defineProperty(this.body, 'parsed', {
get: function() {
...
switch(this.type) { // Undefined
}
});
if (this.type) { // Defined correctly
...
}
}
如果我在对象实例化函数中设置this.type
(即我调用var foo = new bar()
),这将正常工作。但是,我使用this.type
上的Object.defineProperty
设置了module.exports.prototype
:
Object.defineProperty(module.exports.prototype, 'type', {
get: function() {
...
if (this._type) {
return this._type;
}
}
});
在这种情况下,我知道this._type
已设置,因此this.type
应返回预期值,但当我尝试在第一个代码块中切换它时,this.type
为undefined
。奇怪的是,当我从Object.defineProperty
函数外部调用它时,它被定义并返回正确的类型。
我是否可以通过原始this.type
来电访问Object.defineProperty
?