Reflect.ownKeys()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Phương thức tĩnh Reflect.ownKeys() trả về một mảng các key thuộc tính riêng của đối tượng target.
Try it
const object = {
property1: 42,
property2: 13,
};
const array = [];
console.log(Reflect.ownKeys(object));
// Expected output: Array ["property1", "property2"]
console.log(Reflect.ownKeys(array));
// Expected output: Array ["length"]
Cú pháp
Reflect.ownKeys(target)
Tham số
target-
Đối tượng target cần lấy các key riêng.
Giá trị trả về
Một Array các key thuộc tính riêng của đối tượng target, bao gồm chuỗi và symbol. Đối với hầu hết các đối tượng, mảng sẽ theo thứ tự:
- Các chỉ số nguyên không âm theo thứ tự số tăng dần (nhưng dưới dạng chuỗi)
- Các key chuỗi khác theo thứ tự tạo thuộc tính
- Các key symbol theo thứ tự tạo thuộc tính.
Ngoại lệ
TypeError-
Được ném ra nếu
targetkhông phải là đối tượng.
Mô tả
Reflect.ownKeys() cung cấp ngữ nghĩa phản chiếu của việc lấy tất cả các key thuộc tính của một đối tượng. Đây là cách duy nhất để lấy tất cả các thuộc tính riêng — có thể liệt kê và không thể liệt kê, chuỗi và symbol — trong một lần gọi, mà không cần logic lọc thêm. Ví dụ, Object.getOwnPropertyNames() lấy giá trị trả về của Reflect.ownKeys() và lọc để chỉ lấy các giá trị chuỗi, trong khi Object.getOwnPropertySymbols() lọc để chỉ lấy các giá trị symbol. Vì các đối tượng thông thường triển khai [[OwnPropertyKeys]] để trả về tất cả các key chuỗi trước các key symbol, Reflect.ownKeys(target) thường tương đương với Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)). Tuy nhiên, nếu đối tượng có phương thức [[OwnPropertyKeys]] tùy chỉnh (chẳng hạn qua handler ownKeys của proxy), thứ tự các key có thể khác.
Reflect.ownKeys() gọi phương thức nội tại [[OwnPropertyKeys]] của đối tượng trên target.
Ví dụ
>Sử dụng Reflect.ownKeys()
Reflect.ownKeys({ z: 3, y: 2, x: 1 }); // [ "z", "y", "x" ]
Reflect.ownKeys([]); // ["length"]
const sym = Symbol.for("comet");
const sym2 = Symbol.for("meteor");
const obj = {
[sym]: 0,
str: 0,
773: 0,
0: 0,
[sym2]: 0,
"-1": 0,
8: 0,
"second str": 0,
};
Reflect.ownKeys(obj);
// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
// Indexes in numeric order,
// strings in insertion order,
// symbols in insertion order
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-reflect.ownkeys> |