ES5中的訪問器屬性
阿新 • • 發佈:2021-06-17
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()內部驗證新值是否符合要求,只有符合要求的新值,才會被放入被保護的屬性中