2013-08-30 27 views
5

Tôi đã sử dụng Object.definePropertyenumerable: false để xác định một số thuộc tính trên đối tượng cấu hình. Tuy nhiên, có một nơi trong mô-đun của tôi, nơi tôi muốn lặp qua các thuộc tính không thể đếm được cũng như các thuộc tính đếm được. Có thể thực hiện điều này mà không cần giữ danh sách các tên thuộc tính ở nơi khác không?Lặp lại các thuộc tính không liệt kê

Trả lời

8

Tôi đoán bạn có thể sử dụng getOwnPropertyNames trả về thuộc tính, có thể đếm được hay không.

Từ các tài liệu:

Trả về một mảng của tất cả các tài sản (đếm được hay không) tìm thấy trực tiếp khi một đối tượng nhất định.

+0

Ví dụ khi tôi cần điều này trong dự án của mình: Lặp qua tất cả các hàm/hằng số Toán. var mathProps = Object.getOwnPropertyNames (Toán học); mathProps là sau đó ["E", "LN10", "LN2" ....] –

+0

@DanielHoward Có, nhưng nó cũng bao gồm 'toSource'; mà bạn có thể không muốn. Nói chung, bạn cần phải chắc chắn lọc kết quả theo chính xác những gì bạn mong đợi (với danh sách trắng hoặc danh sách cấm), vì vậy nó có thể chỉ hữu ích trong nội dung hoặc mã tuần tự và những thứ tương tự, nơi bạn đang áp dụng một hoạt động chung không quan tâm đến các thuộc tính nào được trả về (hoặc đối tượng nào được truyền cho nó), nó chỉ cần tất cả chúng. – jpaugh