zoukankan      html  css  js  c++  java
  • 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.指向父类,再静态方法中

  • 相关阅读:
    linux基本操作1
    404 Note Found -选题报告
    软工第二次结对实践作业
    软工之404 Note Found团队
    结对作业
    结对作业之代码规范
    观15级K班团队作业有感
    [zz] 设置演示文稿播放时对演讲者和用户显示不同内容
    OpenCV GPU CUDA OpenCL 配置
    [zz] 英文大写缩写前要加THE吗
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11906514.html
Copyright © 2011-2022 走看看