es6类Class
首先,类的数据类型就是函数,类本身就指向构造函数
定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。
类必须使用new调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。
类的内部所有定义的方法,都是不可枚举的
可以通过 Object.getPrototypeOf 方法来获取实例对象的原型,不建议使用__proto__
constructor
一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。
取值函数getter和存值函数setter
class CustomHTMLElement {
get html() {
// TODO 可以在获取html值之前执行拦截逻辑
return this.element.innerHTML;
}
set html(value) {
// TODO 可以在给html赋值之前执行拦截逻辑
this.element.innerHTML = value;
}
}
静态方法
所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”,注意,static方法中的this指向类本身。
父类的静态方法,可以被子类继承。