Object.defineProperty不访问属性

时间:2015-01-14 20:58:04

标签: javascript node.js

在我正在开发的项目中,我正在使用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.typeundefined。奇怪的是,当我从Object.defineProperty函数外部调用它时,它被定义并返回正确的类型。

我是否可以通过原始this.type来电访问Object.defineProperty

0 个答案:

没有答案