取值函数(getter)和存值函数(setter)
与ES5一样在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
上面代码中,prop属性有对应的存值函数和取值函数,因此赋值和读取行为都被自定义了。
存值函数和取值函数是设置在属性的 Descriptor 对象上的。
class CustomHTMLElement {constructor(element) {this.element = element;}get html() {return this.element.innerHTML;}set html(value) {this.element.innerHTML = value;}}var descriptor = Object.getOwnPropertyDescriptor(CustomHTMLElement.prototype, "html");"get" in descriptor // true"set" in descriptor // true
上面代码中,存值函数和取值函数是定义在html属性的描述对象上面,这与 ES5 完全一致。
Class 表达式
与函数一样,类也可以使用表达式的形式定义。
const MyClass = class Me {getClassName() {return Me.name;}};
