Phương thức JavaScript Object.defineProperty () thêm hoặc sửa đổi thuộc tính hiện có trên một đối tượng và trả về đối tượng.
Cú pháp của defineProperty()phương thức là:
Object.defineProperty(obj, prop, descriptor)
Các defineProperty()phương pháp, là một phương pháp tĩnh, được gọi bằng cách sử dụng Objecttên lớp.
Các tham số xác định ()
Các defineProperty()phương pháp có trong:
- obj - Đối tượng để xác định thuộc tính.
- prop - Tên hoặc
Symbolthuộc tính được xác định hoặc sửa đổi. - descriptor - Bộ mô tả cho thuộc tính đang được xác định hoặc sửa đổi.
Bộ mô tả thuộc tính hiện diện trong các đối tượng có hai loại: bộ mô tả dữ liệu và bộ mô tả bộ truy cập. Chúng có thể có các thuộc tính tùy chọn sau.
configurableenumerable
Một bộ mô tả dữ liệu cũng có thể có:
valuewritable
Bộ mô tả trình truy cập cũng có thể có:
getset
Giá trị trả về từ defineProperty ()
- Trả về đối tượng đã được chuyển cho hàm.
Ghi chú:
- Theo mặc định, các giá trị được thêm vào bằng cách sử dụng
Object.defineProperty()là bất biến và không thể liệt kê. - Nếu một mô tả có không phải của
value,writable,getvàsetphím, nó được coi là một mô tả dữ liệu. Nếu một bộ mô tả có cả khóavaluehoặcwritablevàgethoặcset, một ngoại lệ sẽ được đưa ra.
Ví dụ: Thêm thuộc tính dữ liệu vào đối tượng
let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969
Đầu ra
788 Đặt giá trị… Nhận giá trị… 6969
Chúng tôi không thể kết hợp cả dữ liệu và bộ mô tả thuộc tính trình truy cập vì nó sẽ gây ra lỗi.
Để sửa đổi một thuộc tính, thuộc tính của đối tượng writablephải là true, nếu không nó sẽ không sửa đổi và tạo ra lỗi ở chế độ nghiêm ngặt.
Các enumerablethuộc tính tài sản xác định cho dù tài sản được chọn bởi Object.assign()hoặc điều hành lây lan.
Các configurableđiều khiển thuộc tính cùng một lúc cho dù tài sản có thể bị xóa khỏi đối tượng và liệu thuộc tính của nó (trừ valuevà writable) có thể được thay đổi.
Đề xuất Đọc: Đối tượng Javascript defineProperties ()








