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似乎没有工作:它返回undefined
的foo属性.
我使用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)
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |