Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách sử dụng Object.defineProperty() trong JavaScript

Object.defineProperty() cho phép định nghĩa thuộc tính mới hoặc sửa đổi thuộc tính hiện có trên đối tượng với kiểm soát chi tiết: giá trị, có ghi được không, có liệt kê được không, có cấu hình lại được không.

Cú pháp

Object.defineProperty(obj, prop, descriptor)

Tham số

  • obj – Đối tượng định nghĩa thuộc tính.
  • prop – Tên thuộc tính (string hoặc Symbol).
  • descriptor – Đối tượng mô tả thuộc tính:

Các trường trong descriptor

Lưu ý: Không thể đồng thời có value/writable và get/set.

Ví dụ minh họa

<!DOCTYPE html>
<html>
<body>
  <script>
    const obj = {};
    Object.defineProperty(obj, 'prop', {
      value: 20,
      writable: false, // Chỉ đọc
      enumerable: true,
      configurable: false
    });
    obj.prop = 10; // Bỏ qua hoặc lỗi ở strict mode
    document.write(obj.prop); // Xuất: 20
  </script>
</body>
</html>

Ứng dụng thực tế

  • Tạo thuộc tính chỉ đọc (readonly).
  • Getter/setter cho validation, lazy loading, computed properties.
  • Định nghĩa hằng số trên object.
  • Polyfill, shim, thư viện cần kiểm soát hành vi object.
TrườngKiểuMặc địnhMô tả
valueanyundefinedGiá trị thuộc tính
writablebooleanfalseCho phép gán giá trị mới?
enumerablebooleanfalseXuất hiện trong for...in / Object.keys()?
configurablebooleanfalseCho phép xóa hoặc đổi descriptor?
getfunctionundefinedGetter function
setfunctionundefinedSetter function