1. 程式人生 > 其它 >ES5中的訪問器屬性

ES5中的訪問器屬性

ES5——訪問器屬性

一、描述

自己不存值,只提供對另一個屬性(單個屬性)的保護功能。除了保護物件屬性,同時還起到監視的作用,無論是讀取屬性值還是修改屬性值都能被監聽。訪問器屬性在控制檯的物件中以(...)這樣的形式存在,其中必定包含get()和set()函式。

二、使用場景

只要想使用自定義規則保護屬性,就都要用訪問器屬性。

三、程式碼演示

var eric = {
  ename: '埃裡克',
  eage: 25
}
// 規定:年齡可以修改,但是必須介於18~65之間
// 1. 定義訪問器屬性
Object.defineProperty(eric, 'age', {
  value: eric.eage,
  writable: true,
  enumerable: false,
  configurable: false
});
Object.defineProperty('eric', 'eage', {
  get: function () {
    return this.age;
  },
  set: function (value) {
    if (value >= 18 && value <= 65) {
      this.age = value;
    } else {
      throw Error('年齡超範圍!');
    }
  },
  enumerable: true,
  configurable: false
});
// 2. 使用訪問器屬性
console.log(eric.eage); // 底層自動呼叫eric.eage中的get()方法,從受保護的屬性中取出真實屬性值,返回給外部
eric.eage = 26; // 底層自動呼叫eric.eage中的set()方法,同時自動把新值傳給set函式的形參value。在set()內部驗證新值是否符合要求,只有符合要求的新值,才會被放入被保護的屬性中