ES6中的继承

ES6中的class可以看作是一个语法糖,他的绝大部分功能,ES5都 可以做到,新的class写法只是让对象原型的写法更加的清晰,更加的面向对象编程的语法而已

ES5继承:

      基本思想:利用原型链糖一个引用类型继承另一个引用类型的属性和方法(即通过prototype和构造函数实现)

    实质:

      将父类添加到prototype原型对象上;

    ES6继承:

      基本思想:通过exttends关键字实现继承,资料类可以继承父类中所有的方法和属性,子类必须在constructor方法中调用super方法,因为新建的子类没有自己的this对象,而是继承了父类的this对象;

    实质:

      利用extends关键字继承父类,然后继承父类的属性和方法

 使用:

      1.解决了代码的复用性

      2.使用extends关键字实现继承

      3.子类可以继承父类中所有的方法和属性;

      4.子类只能继承一个父类(单继承),一个父类可以有多个子类

      5.子类的构造方法中必须有super()来指定调用父类的构造方法,并且位于子类构造方法中的第一行,

      6.子类中如果与父类相同的方法和属性,将会优先使用子类的(覆盖)

class People {
      //父类的构造方法
      constructor(type) {
        this.tyep = type;
      }
      //构造函数上的原型方法
      sleep() {
        console.log("每天睡一觉");
      }
    }
    //Class通过 extends 关键字实现继承。
    //Teacher 继承People父构造函数
    class Teacher extends People {
      constructor(name, age) {
        //调用父类的构造器,必须存在,且位于子类构造器第一行的位置
        super("人民教师")
        this.name = name;
        this.age = age;
      }
      eat() {
        console.log("学习使我快乐");
      }
    }
    let a = new Teacher("张三", 20);
    //可以实例对象访问到原型对象上的type;
    console.log(a);
    console.log(a.name);
    a.sleep()

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值