blog
blog copied to clipboard
ES5/ES6 类的区别
来源:https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/20
class会进行声明提升,类似 let const,进入暂时性死区class内部采用严格模式class所有方法(包括静态和实例方法)都是不可枚举的class的所有方法(包括静态方法和实例方法)都没有原型对象prototype,所以也没有[[construct]],不能使用 new 来调用- 必须使用 new 调用
class class内部无法重写类名- ES5 和 ES6 子类 this 生成顺序不同。ES5 的继承先生成了子类实例,再调用父类的构造函数修饰子类实例,ES6 的继承先生成父类实例,再调用子类的构造函数修饰父类实例。这个差别使得 ES6 可以继承内置对象
- ES5 原型链子类
__proto__指向Function.prototype,ES6 子类__proto__指向父类