公開與私有類別字段
· 閱讀時間約 4 分鐘
多個提案擴展了現有的 JavaScript 類別語法,提供了新功能。本文章解釋了 V8 v7.2 和 Chrome 72 中新增的公開類別字段語法,以及即將推出的私有類別字段語法。
以下是一個創建名為 IncreasingCounter
的類別實例的程式碼範例:
const counter = new IncreasingCounter();
counter.value;
// 記錄 '獲取目前的值!'
// → 0
counter.increment();
counter.value;
// 記錄 '獲取目前的值!'
// → 1
請注意,存取 value
會先執行某些程式碼(例如,記錄訊息)然後才返回結果。現在問問自己,您會如何在 JavaScript 中實作這個類別?🤔
ES2015 類別語法
以下是使用 ES2015 類別語法實作 IncreasingCounter
的方式:
class IncreasingCounter {
constructor() {
this._count = 0;
}
get value() {
console.log('獲取目前的值!');
return this._count;
}
increment() {
this._count++;
}
}
此類別在原型上安裝了 value
取得器和 increment
方法。更有趣的是,這個類別有一個建構子會創建 _count
實例屬性並將其預設值設定為 0
。我們目前傾向使用底線前綴來表示 _count
不應直接被類別的用戶使用,但這只是一種慣例;它並不是語言強制的 真正 “私有”屬性。