无法获取类属性的属性描述符

Pie*_*aud 7 javascript ecmascript-6 babeljs

我想检查一个JavaScript类的实例并访问它的getter.在ES5中,我可以编写此代码来检索对象的getter:

var obj = {
  get foo () {}
};

const foo = Object.getOwnPropertyDescriptor (obj, 'foo').get;
// returns a function
Run Code Online (Sandbox Code Playgroud)

但是,当我在类实例上尝试此操作时,我的代码失败:

class Foo {
  get foo () {}
}

var obj = new Foo ();
const foo = Object.getOwnPropertyDescriptor (obj, 'foo').get;
// error: Cannot read property 'get' of undefined
Run Code Online (Sandbox Code Playgroud)

Object.getOwnPropertyDescriptor似乎没有工作:它返回undefinedfoo属性.

我使用Babel 6.4.5将我的代码从ES2015转换为ES5.

Object.getOwnPropertyDescriptor认为对班工作吗?或者这是使用巴别塔的副作用?


编辑我终于Object.getOwnPropertyDescriptor按照Bergi的建议切换到了.我在博客文章中详细描述了解决方案 (在JavaScript类实例上枚举方法).

Ber*_*rgi 12

它适用于类,但您尝试过的实例没有自己的 属性.使用

Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), 'foo')
Object.getOwnPropertyDescriptor(Foo.prototype, 'foo')
Run Code Online (Sandbox Code Playgroud)