Javascript Object.defineProperty ()

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.

  • configurable
  • enumerable

Một bộ mô tả dữ liệu cũng có thể có:

  • value
  • writable

Bộ mô tả trình truy cập cũng có thể có:

  • get
  • set

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, getsetphím, nó được coi là một mô tả dữ liệu. Nếu một bộ mô tả có cả khóa valuehoặc writablegethoặc set, 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ừ valuewritable) có thể được thay đổi.

Đề xuất Đọc: Đối tượng Javascript defineProperties ()

thú vị bài viết...