我想检查一个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)。
答案 0 :(得分:9)
它适用于类,但您尝试使用的实例没有拥有属性。使用
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), 'foo')
Object.getOwnPropertyDescriptor(Foo.prototype, 'foo')