В современных браузерах вы можете использовать Object.getOwnPropertyNames
для получения всех свойств (как перечислимых, так и неперечисляемых) объекта. Например:
function Person ( age, name ) {
this.age = age;
this.name = name;
}
Person.prototype.greet = function () {
return "My name is " + this.name;
};
Person.prototype.age = function () {
this.age = this.age + 1;
};
Object.getOwnPropertyNames( Person.prototype );
Обратите внимание, что это извлекает только собственные свойства , поэтому не будет возвращать свойства, найденные где-либо еще в цепочке прототипов. Однако, похоже, это не ваша просьба, поэтому я предполагаю, что этого подхода достаточно.
Если вы хотите видеть только перечислимые свойства, вы можете вместо этого использовать Object.keys
. Это вернет ту же коллекцию, за исключением неперечислимого constructor
свойства.