1、class声明会提升,但不会初始化值,类似于let、const声明变量一样。
2、class声明内部会启用严格模式。
3、class的所有方法(包括静态和实例方法)都是不可枚举的。
4、class的所有方法(包括静态和实例方法)都没有原型对象prototype,不能用new来调用。
5、必须使用new来调用class。
6、class内部无法重写类名。
7、ES6子类可以直接通过__proto__寻址到父类。
js
//ES6
class Super {};
class Sub extends Super {};
const sub = new Sub();
sub.__proto__ === Sub.prototype;//true
Sub.__proto__ === Super;//true
Sub.prototype.__proto__===Super.prototype;// true
//ES5
function Super() {};
function Sub() {};
Sub.prototype = new Super();
Sub.prototype.constructor = Sub;
var sub = new Sub();
Sub.__proto__ === Function.prototype;//true