公共和私有类字段
· 阅读需 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
的getter和一个increment
方法。更有趣的是,类具有一个构造函数,该构造函数创建了一个实例属性_count
并将其默认值设置为0
。目前我们倾向于使用下划线前缀来表示_count
不应该被类的使用者直接使用,但这只是一种约定,并不是一种真正的由语言强制执行的“私有”属性。