Trong các trình duyệt hiện đại, bạn có thể sử dụng Object.getOwnPropertyNames
để lấy tất cả các thuộc tính (cả có thể liệt kê và không thể liệt kê) trên một đối tượng. Ví dụ:
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 );
Lưu ý rằng điều này chỉ lấy các thuộc tính riêng , vì vậy nó sẽ không trả về các thuộc tính được tìm thấy ở nơi khác trên chuỗi nguyên mẫu. Tuy nhiên, điều đó dường như không phải là yêu cầu của bạn vì vậy tôi sẽ cho rằng cách tiếp cận này là đủ.
Nếu bạn chỉ muốn xem các thuộc tính có thể liệt kê , bạn có thể sử dụng thay thế Object.keys
. Điều này sẽ trả về cùng một tập hợp, trừ đi thuộc tính không liệt kê được constructor
.