ES5中的类和ES6中的class有什么区别

15 阅读1分钟
  • es5中通常通过构造函数和原型的方式定义一个类;es6中使用class

1. es6中class必须用new调用,不能直接执行;而es5中构造函数和普通函数没什么本质区别。

class Foo{
    constructor(color){
        this.color=color;
    }
}
Foo() //报错

2. class类不存在变量提升,不能在定义前new它

3. class类无法遍历它原型上的实例

  • 普通构造函数,原型链上的like也被打印出来 image.png

  • class类,没有打印原型上的like;只打印了color

image.png

4. new.target属性

  • es6为new命令引入了一个new.target属性,他会返回new命令作用于哪个构造函数。如果不是通过new调用或者Reflect.constructor调用的,new.target会返回undefined

5.class里面有static静态方法

  • static方法只能通过类调用,不会出现在实例上;另外如果static方法里面有this关键字,这个this指的是类而不是实例