Я хочу проверить экземпляр класса JavaScript и получить доступ к его получателю. В 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.
Is Object.getOwnPropertyDescriptor
Предполагается также работать над классами? Или это побочный эффект от использования Вавилона?
EDIT Я, наконец, перешел на Object.getOwnPropertyDescriptor
как предложено по Берги. Подробно описываю решение в таблице blog post (Enumerating methods on a JavaScript class instance).
Примеры совершенно разные. В первом примере создается объект, который имеет «foo» getter, второй создает объект с прототипом, который имеет «foo» getter. – zeroflagL
А, да. Я это изучил! Я все еще хочу понять, как классы ES6 сопоставляются с ES5. –
* «Мне все еще нужно понять, как классы ES6 сопоставляются с ES5» * 'class Foo {constructor() {/ * constructor * /} method() {}}', (почти) так же, как и 'function Foo() {/ * constructor * /} Foo.prototype.method = function() {};', за исключением того, что методы не перечислены. –