В современных браузерах вы можете использовать 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;
};
// ["constructor", "greet", "age"]
Object.getOwnPropertyNames( Person.prototype );
Обратите внимание, что при этом извлекаются только own-properties , поэтому он не будет возвращать свойства, найденные в других местах цепочки прототипов. Это, однако, не является вашей просьбой, поэтому я буду считать, что такого подхода достаточно.
Если вы хотите видеть только перечислимые свойства, вы можете вместо этого использовать Object.keys
. Это вернет ту же коллекцию за вычетом не перечисляемого свойства constructor
.