JavaScript 屬性描述符

屬性描述符(Property Descriptor)是 ES5 以後出現的概念,顧名思義,它用於描述屬性應該是什麼樣,例如是否只讀,可否枚舉,可否可配置等。全部對象屬性都可使用屬性描述符來定義。函數

屬性描述符的六個屬性

  • valueprototype

    • 屬性值。
  • writablecode

    • 是否容許賦值,true 表示容許,不然該屬性不容許賦值。
  • get對象

    • 返回屬性值的函數。若是爲 undefined 則直接返回描述符中定義的 value 值。
  • setip

    • 屬性的賦值函數。若是爲 undefined 則直接將賦值運算符右側的值保存爲屬性值。
  • configurableget

    • 若是爲 true,則表示該屬性能夠從新定義描述符,或者從屬性的宿主刪除。缺省爲 true
  • enumerableit

    • 若是爲 true,則表示遍歷宿主對象時,該屬性能夠被遍歷到。缺省爲 true

Object 操做屬性的方法

  • Object.defineProperty(obj, prop, descriptor)io

    • 使用描述符 descriptor 定義 objprop 屬性。
  • Object.getOwnPropertyDescriptor(obj, prop)event

    • 獲取 objprop 屬性描述符。
  • Object.preventExtensions(obj)table

    • 禁止爲當前對象 obj 添加新屬性。
  • Object.seal(obj)

    • 封印當前對象 obj,禁止添加新屬性,而且將全部現有屬性 configurable 設置爲 false
  • Object.freeze(obj)

    • 凍結當前對象 obj,禁止增長新屬性,禁止刪除現有屬性或修改屬性描述符,至關於將該 obj 變成了 immutable
  • Object.isExtensible(obj)

    • 判斷當前對象 obj 是否容許擴展。
  • Object.isSealed(obj)

    • 判斷當前對象 obj 是否被封印。
  • Object.isFrozen(obj)

    • 判斷當前對象 obj 是否被凍結。
  • Object.prototype.hasOwnProperty(prop)

    • 判斷當前對象是否擁有 prop 屬性。
相關文章
相關標籤/搜索