在 ES5 中 可以 使用 getter 和 setter 部分 改寫 默認(rèn) 操作帖汞, 但是 只能 應(yīng)用 在 單個(gè) 屬性 上抠蚣, 無法 應(yīng)用 在 整個(gè) 對象 上。 getter 是一 個(gè) 隱藏 函數(shù)傲茄, 會(huì)在 獲取 屬性 值 時(shí)調(diào) 用坎缭。 setter 也是 一個(gè) 隱藏 函數(shù), 會(huì)在 設(shè)置 屬性 值 時(shí)調(diào) 用尚胞。
當(dāng)你 給 一個(gè) 屬性 定義 getter硬霍、 setter 或者 兩者都 有時(shí), 這個(gè) 屬性 會(huì)被 定義 為“ 訪問 描述 符”( 和“ 數(shù)據(jù) 描述 符” 相對)辐真。 對于 訪問 描述 符 來說须尚, JavaScript 會(huì) 忽略 它們 的 value 和 writable 特性, 取而代之 的 是 關(guān)心 set 和 get( 還有 configurable 和 enumerable) 特性侍咱。
辛普森(Kyle Simpson). 你不知道的JavaScript(上卷) (圖靈程序設(shè)計(jì)叢書) (p. 117). 人民郵電出版社. Kindle 版本.
var myObject = {
// 給 a 定義 一個(gè) getter
get a() {
return this._ a_;
},
// 給 a 定義 一個(gè) setter
set a( val) {
this._ a_ = val * 2;
}
};