ES6 类的继承,this 的指向,super关键字

  • 继承:子类可以继承父类的一些属性和方法
<body>

    <button>加法 </button>
<script>
var that;
class Father{//父类
      constructor(x,y){
          that = this;
          this.x=x;
          this.y=y;
          this.btn=document.querySelector('button');
          this.btn.onclick=this.sum;
      }
      sum(){
        //这里的this 指向btn,因为btn调用了这个方法,
          console.log(that.x+that.y);//that存的是构造函数里的this
      }
      say(){
           
           console.log("Father");
      }
}
class Son extends Father{//子 继承父 
     constructor(x,y){
          super(x,y);//调用父类的构造函数,super必须放在子类this之前
          this.x=x;
          this.y=y;
      }
      say(){
        console.log("Son"); 
         console.log(super.say())
      }
}

var son = new Son(2,6);
son.sum();
var sonTwo = new Son();
sonTwo.say();
</script>
<body>
  • 子类调用父类的函数要用到super关键字,可以调用构造函数也可以调用普通函数。this的指向是谁调用指向谁。子类的构造函数中的this指向的是子类。

  • 继承中如果实例化子类并输出一个方法,先看子类有没有,然后再看父类,如果子类有就先执行子类,子类没有才执行父类的方法(就近原则

  • super关键字在子类中,必须放到子类this关键字之前

  • ES6 中是没有变量提升的,必须先定义类,才能实例化对象。类里边的共有的属性和方法要用this关键字使用

  • constructor 里面的this指向的是创建的实例对象,方法里的this指向方法的调用者

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。