介绍
>生成实例对象,构造函数的另一种写法
>类的数据类型是函数,本身指向构造函数
>类的方法都定义在prototype上面,Object.assign方法可以一次向类添加多个方法
>类的内部所有定义的方法,都是不可枚举的
>类的属性名可以采用表达式 [变量](){}
>内部是严格模式
>类的construtor方法是默认方法,默认返回实例对象(this)。可以指定返回其它
>类必须用new调用
>class表达式
>不存在变量提升
>私有方法和私有属性
私有方法实现:
>在方法前加_(类的外部也可以调用)
>将方法移出模块,内部使用bar.call(this,baz)绑定
>利用Symbol值的唯一性,将私有方法的名字命为一个Symbol值
const bar=Symbol('baz')
>私有属性
>在属性名之前使用#表示
>私有属性可以有初始值
>this的指向
>默认指向类的实例,如果单独使用方法,可能报错
解决:
>构造方法中绑定this
>箭头函数
>proxy
>class的静态方法
在方法名前加上static关键字,该方法不被实例继承,直接通过类来调用。静态方法中this的指向是类,不是实例
>class的继承
利用extends关键字
使用了super方法,调用父类,这样this才是继承父类的this对象,子对象本是没有this对象的。如果不调用super方法,子类就得不到this对象。
>Object.getPrototypeOf()
Object.getPrototypeOf() 可以用来从子类上获取父类,可以判断一个类是否继承了另一个类
>super()
>作为函数调用时,代表父类的构造函数,子类的构造函数必须调用一次super().super作为函数时,只能在子类的构造函数中使用,否则报错
>super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。
>super作为对象,用在静态方法之中,这时super将指向父类,而不是父类的原型对象。
注:整个文章为自己参考各种文档整理的笔记,如有问题还请多多指教。详情请见阮一峰es6详解