es6中的class使用

介绍

      >生成实例对象,构造函数的另一种写法

      >类的数据类型是函数,本身指向构造函数

      >类的方法都定义在prototype上面,Object.assign方法可以一次向类添加多个方法


es6中的class使用_第1张图片

        >类的内部所有定义的方法,都是不可枚举的

        >类的属性名可以采用表达式      [变量](){}

        >内部是严格模式

        >类的construtor方法是默认方法,默认返回实例对象(this)。可以指定返回其它

        >类必须用new调用  


        >class表达式


es6中的class使用_第2张图片
如果内部使用可以省略ME

         >不存在变量提升

         >私有方法和私有属性

               私有方法实现:

                      >在方法前加_(类的外部也可以调用)

                      >将方法移出模块,内部使用bar.call(this,baz)绑定

                      >利用Symbol值的唯一性,将私有方法的名字命为一个Symbol值

                                   const bar=Symbol('baz')

         >私有属性

                 >在属性名之前使用#表示

                  >私有属性可以有初始值

          >this的指向

                   >默认指向类的实例,如果单独使用方法,可能报错

                            解决:

                                    >构造方法中绑定this


es6中的class使用_第3张图片

                                    >箭头函数


es6中的class使用_第4张图片

                                    >proxy


             >class的静态方法

                   在方法名前加上static关键字,该方法不被实例继承,直接通过类来调用。静态方法中this的指向是类,不是实例


es6中的class使用_第5张图片

             >class的继承

                 利用extends关键字

es6中的class使用_第6张图片

                  使用了super方法,调用父类,这样this才是继承父类的this对象,子对象本是没有this对象的。如果不调用super方法,子类就得不到this对象。


es6中的class使用_第7张图片

              >Object.getPrototypeOf()

                       Object.getPrototypeOf() 可以用来从子类上获取父类,可以判断一个类是否继承了另一个类

              >super()

                     >作为函数调用时,代表父类的构造函数,子类的构造函数必须调用一次super().super作为函数时,只能在子类的构造函数中使用,否则报错


es6中的class使用_第8张图片

                      >super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。


es6中的class使用_第9张图片


es6中的class使用_第10张图片

                        >super作为对象,用在静态方法之中,这时super将指向父类,而不是父类的原型对象。


es6中的class使用_第11张图片
其它文章借鉴

   注:整个文章为自己参考各种文档整理的笔记,如有问题还请多多指教。详情请见阮一峰es6详解

你可能感兴趣的:(es6中的class使用)