Board logo

标题: ES6的继承(1) [打印本页]

作者: look_w    时间: 2019-3-15 17:07     标题: 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()




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0