Object.getOwnPropertyDescriptors()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
Phương thức tĩnh Object.getOwnPropertyDescriptors() trả về tất cả các property descriptor của chính đối tượng đã cho.
Try it
const object = {
foo: 42,
};
const descriptors = Object.getOwnPropertyDescriptors(object);
console.log(descriptors.foo.writable);
// Expected output: true
console.log(descriptors.foo.value);
// Expected output: 42
Cú pháp
Object.getOwnPropertyDescriptors(obj)
Tham số
obj-
Đối tượng cần lấy tất cả các property descriptor của chính nó.
Giá trị trả về
Một đối tượng chứa tất cả các property descriptor của chính đối tượng. Có thể là một đối tượng rỗng nếu không có thuộc tính nào.
Mô tả
Phương thức này cho phép kiểm tra mô tả chính xác của tất cả các thuộc tính của chính đối tượng. Một thuộc tính trong JavaScript bao gồm tên có giá trị chuỗi hoặc Symbol và một property descriptor. Thêm thông tin về các kiểu property descriptor và các thuộc tính của chúng có thể được tìm thấy trong Object.defineProperty().
Một property descriptor là một bản ghi có một số thuộc tính sau:
value-
Giá trị liên kết với thuộc tính (chỉ dành cho data descriptor).
writable-
truekhi và chỉ khi giá trị liên kết với thuộc tính có thể được thay đổi (chỉ dành cho data descriptor). get-
Một hàm đóng vai trò getter cho thuộc tính, hoặc
undefinednếu không có getter (chỉ dành cho accessor descriptor). set-
Một hàm đóng vai trò setter cho thuộc tính, hoặc
undefinednếu không có setter (chỉ dành cho accessor descriptor). configurable-
truekhi và chỉ khi kiểu của property descriptor này có thể được thay đổi và thuộc tính có thể bị xóa khỏi đối tượng tương ứng. enumerable-
truekhi và chỉ khi thuộc tính này xuất hiện trong quá trình liệt kê các thuộc tính trên đối tượng tương ứng.
Ví dụ
>Tạo bản sao nông
Trong khi phương thức Object.assign() chỉ sao chép các thuộc tính có thể đếm và của chính đối tượng từ đối tượng nguồn sang đối tượng đích, bạn có thể sử dụng phương thức này và Object.create() để tạo bản sao nông giữa hai đối tượng không xác định:
Object.create(
Object.getPrototypeOf(obj),
Object.getOwnPropertyDescriptors(obj),
);
Tạo lớp con
Một cách thông thường để tạo lớp con là định nghĩa lớp con, đặt prototype của nó thành một instance của lớp cha, và sau đó định nghĩa các thuộc tính trên instance đó. Điều này có thể trở nên cồng kềnh đặc biệt với getter và setter. Thay vào đó, bạn có thể sử dụng code này để đặt prototype:
function superclass() {}
superclass.prototype = {
// Định nghĩa hàm tạo, phương thức và thuộc tính của lớp cha ở đây
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
// Định nghĩa hàm tạo, phương thức và thuộc tính của lớp con ở đây
});
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.getownpropertydescriptors> |