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

时间:2016-01-26 15:30:07

标签: javascript ecmascript-6 babeljs

我想检查一个JavaScript类的实例并访问它的getter。在ES5中,我可以将此代码写入对象的retrieve the getter

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

const foo = Object.getOwnPropertyDescriptor (obj, 'foo').get;
// returns a function

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

class Foo {
  get foo () {}
}

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

Object.getOwnPropertyDescriptor似乎不起作用:它返回undefined 对于foo属性。

我正在使用Babel 6.4.5将我的代码从ES2015转换为ES5。

Object.getOwnPropertyDescriptor是否也适用于课程?或者这是使用Babel的副作用吗?

编辑我最终按照建议切换到Object.getOwnPropertyDescriptor 由Bergi。我在blog post中详细描述了解决方案 (Enumerating methods on a JavaScript class instance)。

1 个答案:

答案 0 :(得分:9)

它适用于类,但您尝试使用的实例没有拥有属性。使用

Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), 'foo')
Object.getOwnPropertyDescriptor(Foo.prototype, 'foo')