Trật tự lặp qua đặc tính object Javascript

Trật tự lặp qua đặc tính object Javascript

ES6 chính thức định nghĩa trật tự trong đó các đặc tính bản thân của một object được lặp qua. Object.keys(),
Object.getOwnPropertyNames(), Object.getOwnPropertySymbols(), Reflect.ownKeys(), và các phương thức liên quan
như JSON.stringify() tất cả liệt kê các đặc tính trong trật tự sau, tùy thuộc vào bó hẹp thêm của bản thân
chúng về liệu chúng có liệt kê các đặc tính không lặp qua được hay các đặc tính các tên của chúng là các strings
hay kí hiệu:
+ Các đặc tính string các tên của chúng là các số nguyên không âm được liệt kê trước tiên, trong trật tự số
từ nhỏ nhất tới lớn nhất. Quy tắc này có nghĩa rằng các mảng và objects giống mảng sẽ có các đặc tính của
chúng lặp qua trong trật tự.
+ Sau khi tất cả các đặc tính cái trông như các chỉ mục mảng được liệt kê, tất cả các đặc tính còn lại với
các tên string được liệt kê (bao gồm các đặc tính cái trông như các số âm hay số dấu phẩy động). Các đặc
tính này được liệt kê trong trật tự trong đó chúng được thêm vào object. Cho các đặc tính định nghĩa trong
một object literal, trật tự này là tương tự trật tự chúng xuất hiện trong literal.
+ Cuối cùng, các đặc tính các tên của chúng là các object kí hiệu được liệt kê trong trật tự trong đó chúng
đã được thêm vào object.
Trật tự lặp qua cho for/in loop không được chỉ ra chặt chẽ như nó là cho các hàm lặp qua này, nhưng các thực thi
điển hình lặp qua các đặc tính bản thân trong trật tự được mô tả, sau đó đi lên các móc xích prototype lặp qua
các đặc tính trong cùng trật tự cho mỗi prototype object. Chú ý, tuy nhiên, rằng một đặc tính sẽ không
được lặp qua nếu một đặc tính theo cùng tên đó đã lặp qua xong, hay thậm chí nếu một đặc tính không lặp qua được
theo cùng tên đã được xem xét.

Chia sẻ