ES5/ES6继承的区别

  1. class有变量提升,但初始化不会赋值。
const demo = new Demo() // 会报错 ReferenceError(引用错误)
class Demo {}
  1. class内部会启用严格模式use strict
class Demo {
  constructor (){
    foo = 1 // 报错 foo未定义
  }
}
const demo = new Demo() 
  1. class中的所有方法(包括静态方法和实例方法)都没有原型对象prototype, 也没有constructor, 故不能使用new方法调用class中的方法。 但class必须使用new调用。
 class Demo {
  constructor (){
  }
  test() {
    console.log("test")
  }
}
const demo1 = Demo() // 报错 Class constructor Demo cannot be invoked without 'new'
const demo = new Demo() 
new demo.test()  // 报错 demo.test is not a constructor
  1. class内部无法重新类名
class Foo {
  constructor() {
    this.foo = 42;
    Foo = 'Fol'; // TypeError: Assignment to constant variable.
  }
}
new Foo()

你可能感兴趣的:(ES5/ES6继承的区别)