在提供显式“this”参数时访问私有字段

时间:2017-07-04 17:24:56

标签: typescript

不确定,这是一个错误或功能,但如果我提供一个明确的'this'参数 对于一个函数,我将不会访问私有属性抛出这个。

class Test {
    private _document: any;    
}

const myDynamicProp = '....';


Object.defineProperty(Test.prototype, myDynamicProp , {
      get: function(this: Test) {
        return this._document[myDynamicProp];  // no access to private  and protected field      
      }
  });

有人可以建议一些澄清这一时刻的文件吗?

1 个答案:

答案 0 :(得分:0)

  

无法访问私有财产,请将此

只有类体中显式的方法/函数才能访问私有字段。允许外部扩展从this获取它将类似于允许外部类从实例获取它,因此是不允许的。

更多

你应该使用getter而不是defineProperty

class Test {
    private _document: any;    
    get foo() { return this._document }
}