首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ES6的继承(1)

ES6的继承(1)

关键点
1、class 可以理解为function,由于class本质还是一个function,因此它也会拥有一个的prototype属性,当new一个class时,会把class的porototype属性赋值给这个新对象的 __proto属性。
2、constructor 方法是默认添加的方法,在new一个对象时,自动调用该方法,constructor里面定义自己的属性。
3、继承extends和super,class 子类名 extends 父类名实现继承,当然还得在constructor里面写上super(父类的参数),意思就是在子类中获得父类的this指针,相当于Animal.call(this),参考

    // es6继承
      class Animal {
        //构造函数,里面写上对象的属性
        constructor(props) {
          this.name = props.name || 'Unknown';
        }
        //方法写在后面
        eat() {//父类共有的方法
          console.log(this.name + " will eat pests.");
        }
      }
     
      //class继承
      class Bird extends Animal {
        //构造函数
        constructor(props,myAttribute) {//props是继承过来的属性,myAttribute是自己的属性
          //调用实现父类的构造函数
          super(props)//相当于获得父类的this指向
          this.type = props.type || "Unknown";//父类的属性,也可写在父类中
          this.attr = myAttribute;//自己的私有属性
        }
     
        fly() {//自己私有的方法
          console.log(this.name + " are friendly to people.");
        }
        myattr() {//自己私有的方法
          console.log(this.type+'---'+this.attr);
        }
      }
     
    //通过new实例化
      var myBird = new Bird({
        name: '小燕子',
        type: 'Egg animal'//卵生动物
      },'Bird class')
      myBird.eat()
      myBird.fly()
      myBird.myattr()
返回列表