- es5中通常通过构造函数和原型的方式定义一个类;es6中使用class
1. es6中class必须用new调用,不能直接执行;而es5中构造函数和普通函数没什么本质区别。
class Foo{
constructor(color){
this.color=color;
}
}
Foo() //报错
2. class类不存在变量提升,不能在定义前new它
3. class类无法遍历它原型上的实例
-
普通构造函数,原型链上的like也被打印出来
-
class类,没有打印原型上的like;只打印了color
4. new.target属性
- es6为new命令引入了一个new.target属性,他会返回new命令作用于哪个构造函数。如果不是通过new调用或者Reflect.constructor调用的,new.target会返回undefined
5.class里面有static静态方法
- static方法只能通过类调用,不会出现在实例上;另外如果static方法里面有this关键字,这个this指的是类而不是实例