• ES6 继承


     

    ES5中调用new的操作: 1.先创建一个新的对象obj = {}

               2.给新对象obj设置原型属性 obj.__proto__ = A.prototype;

               3.给新对象设置实例属性 A.constructor.apply(obj,args),将属性和方法实例化,constructor中的this指向的是新创建的obj对象

               4.返回构造函数的结果,obj / this / 其他引用对象;

    ES6继承:

       继承的实质:先创建父类的构造函数对象this,然后再用子类的构造函数修改this,this指向子类实例。

       主要是通过extends / class 的语法糖(原本已经有的功能,实现理解性和逻辑性更强)

    //class的模板
    
    //这种继承方式和ES5的寄生组合继承方式基本一样,将父类的原型对象作为子类的原型对象,父类的实例方法继承给子类。
    class Child extends Father{
        
        constructor(x,y){
            super();  //必须得先调用一下父类构造函数,实现继承父类的实例属性,实例属性独有
            
            //实例属性和方法、
            this.y = y;
            this.x = x;
            this.print = this.print.bind(this)//将print方法绑定到this上做为实例方法。这在React中就是这般使用。
        }
        
        static  staticFunction(){
            //静态方法 只能类调用
        }
        print(){
          //类的原型对象的方法,原型对象方法中的this是运行时才确定的。
          return this.x;
        }
    }

     super:

       1.作为函数的时候,将指向父类的构造函数

        2.作为对象的时候:

          2.1.指向父类的原型对象

          2.2.指向子类this本身,super调用父类的放的时候

          2.3.指向父类,再静态方法中

  • 相关阅读:
    hdoj:2075
    hdoj:2072
    hdoj:2071
    hdoj:2070
    hdoj:2069
    test001
    hdoj:2067
    hdoj:2061
    hdoj:2058
    hdoj:2057
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11906514.html
Copyright © 2020-2023  润新知