2021-08-17

ES5和ES6继承详情展示

关于ES5和ES6的继承做出本人的理解,如有问题,也请指出,大家共同成长。

ES5的继承

ES5有两种继承方式。 一种是经典继承 一种是原型链继承

  1. 一种是经典继承
  2. 一种是原型链继承

经典继承

1,先写个构造函数 function Animal(){

      }

,2,再写一个构造函数 function Dog(){
Animal.call()
}
3,这里我们想让dog继承animal里面的一些东西。
这时候我们通过经典继承怎么实现?
我们这dog内部调用animal构造函数。阿计入animal.call()更改指向
这时,在dog内部就可以访问animal的一些属性和方法了。如,上函数中加入 Animal.call()。

原型链继承

1,以这个例子来说,Dog.prototype =new Animal()。,这里的子构造函数是Dog,new Animal生成了Animal的实例,这时dog.prototype指向animal的实例。这两个是es5中的继承实例。子构造函数的实例。子构造函数的原型指向父构造函数的实例。

ES6的继承

ES6的继承会有两个线,这两个线同时存在。一个是子类继承父类,另一个是子类原型对象继承父类原型对象。

子类继承父类
1,如何理解子类继承父类?
子类的构造函数继承父类的继承函数。
2, 如何理解子类原型对象继承父类原型对象?
Dog.__proto === Animal.prototype.
这时我们打开vscode,编写一个js文件来具体说明。

class Animal {
// 定义静态属性
static animalcolor=‘white’
// 这里为了显示继承,我们在color前加个animal,便于观察
constructor(name, age) {
// constructor是一个构造器,里面可以执行各种方法。
this.name = name
this.age = age
console.log(‘这是Animal实例属性’);
// 做完这一步,我们在定义一个静态属性
}
//静态方法
static animalFun(){
console.log(‘Animal的静态方法’)
}

// 实例方法
animalFun1(){
    console.log('animal的实例方法')
    // 三个属性方法,分离开来
}

}

// 这三个都是父类的,下面我们写子类的
class Dog extends Animal {
constructor(name, age, weight) {
// 既然要继承animal,这里要用super,把当前的name和age导入
super(name, age)
this.weight = weight
console.log(‘Dog的构造器’);
// 这里也可以理解成dog的静态属性
}
}
//实例化对象
let dog = new Dog(‘阿毛’, 1, 30);
// 这是dog的实例属性出现了
console.log(dog);
// 这里我在打印时,输入了’dog’这样就不是实例了。

 2,然后在集成终端打开,输入node    文件名.js

在这里插入图片描述

这里想说的是我在consol.log实例化中时,不应该是输入’dog’,这样的话,就不是实例的引用了。

图形展示ES6继承的关系

在这里插入图片描述



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值