W nowoczesnych przeglądarkach można użyć Object.getOwnPropertyNames
do pobrania wszystkich właściwości (zarówno wyliczalnych, jak i niewliczalnych) obiektu. Na przykład:
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 );
Zauważ, że to pobiera tylko własne właściwości , więc nie zwróci właściwości znalezionych gdzie indziej w łańcuchu prototypów. To jednak nie wydaje się być Twoją prośbą, więc przyjmuję, że takie podejście jest wystarczające.
Jeśli chcesz zobaczyć tylko wyliczalne właściwości, możesz zamiast tego użyć Object.keys
. To zwróci tę samą kolekcję, pomniejszoną o niewliczalną constructor
właściwość.