Es6面向对象

2022-09-08 16:34:47 浏览数 (2)

类声明

语法格式

代码语言:javascript复制
class Person{
//构造方法
    constructor(name){
        this.name = name
    }
    run(){
        console.log('run')
    }
}

//实例化

代码语言:javascript复制
var ll = new Person('test')
ll.run()

类继承

语法格式

代码语言:javascript复制
class Father{
            money(){
                ...
            }
}

class Son extends Father{
    
}
var son = new Son();
son.money();

看如下代码能否正常运行

代码语言:javascript复制
  class Father{
      constructor(x,y){
          this.x = x;
          this.y = y;
      }
      sum(){
          console.log(this.x this.y)
      }
  }
  class Son extends Father{
      constructor(x,y){
          this.x = x;
          this.y = y;
      }
  }
  var son = new Son(1,2)
  son.sum();

由于子类也有个构造函数,参数就被传进了子类,并没有到父类的构造函数去 如果有方法将这个参数传递给父类那么问题就解决了

super关键字

super关键字用于访问和调用对象父类上的函数,可以调用父类的构造函数,也可以调用父类的普通函数

对子类进行修改

代码语言:javascript复制
 class Son extends Father{
      constructor(x,y){
          super(x,y);//调用父类构造函数
      }
  }

super调用父类普通函数

代码语言:javascript复制
  class Father{
      
      say(){
          return '父亲'
      }
  }
  class Son extends Father{
     say(){
         console.log('儿子')
         console.log(super.say())
     }
  }
  var son = new Son()
  son.say();

0 人点赞