Почему я не могу перебрать прототип класса? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть следующий код без регистрации:

class test {a(){}}

for(const a in test.prototype)
    console.log(a)

Любые идеи почему - если я отлаживаю его, я вижу методы внутри test.prototype

Я использую nodejs.

1 Ответ

0 голосов
/ 21 ноября 2018

Методы, созданные в объекте-прототипе с помощью объявления class, неявно делаются не перечисляемыми.Вы можете сделать это самостоятельно для любого объекта:

function Constructor() { }

Object.defineProperty(Constructor.prototype, "a", {
  value: function() { },
  enumerable: false
});

(Флаги enumerable и writable по умолчанию false, поэтому вам даже не нужно явно включать его.)

...