Object與Class的關係

小軒雪發表於2018-06-04

Object型別

物件:一組資料和功能的集合。

所有的函式(function)都是物件,那麼物件就會有Object型別所具有的任何方法和屬性,比如:

  • constructor 指向建構函式
  • hasOwnProperty(propertyName) 檢查給定的屬性是否屬於當前例項
  • isPrototypeof(object) 檢查傳入的物件是否是當前物件的原型
  • propertyIsEnumberable(propertyName) 檢查給定的屬效能否使用for-in來列舉
  • toLcoalString() 返回物件的字串表示,與執行環境的地區對應。
  • toString() 返回物件的字串表示
  • valueOf() 返回物件的字串、數值或布林表示。通常與toString返回的相同

屬性型別

物件有屬性,屬性又分為兩種型別:

資料屬性

資料屬性是一個存放資料的位置,這個位置可以讀取和寫入值。 資料屬性有4個描述其行為的特性:

  • [[Configurable]] 是否可刪除重定義屬性,是否可修改屬性的特性,是否可修改為訪問器屬性。預設為true
  • [[Enumberable]] 能否通過for-in迴圈返回屬性。預設為true
  • [[Writable]] 能否修改屬性的值。預設為true
  • [[Value]] 屬性的資料值。預設為undefined

知道了這麼多的資料屬性特性,那麼怎麼配置呢? Object.defineProperty()方可以實現,此方法可以接收3個引數:屬性所在物件、屬性名字和描述符物件。這裡的描述符物件包含的就是:configurable、enumberable、writeable、value

var person = {};
Object.defineProperty(person, "name", {
    writeable: false,
    value: "Nicholas"
});

console.info(person.name);  //"Nicholas"
person.name = "Greg";
console.info(person.name);  //"Nicholas"
複製程式碼

相關文章