js的继承

ES6 的继承:子 extends 父,哪里继承哪里写一个super()

代码:

class Parent{

constructor(){
     this.age=18
}
}

class Child extends Parent{     //子继承父

constructor(){
     super()            //加上super(),要不然会报错
     this.age=18
}
}
let o = new Child()
 
原型链的继承:将子类的原型指向父类的实例即可
缺点:

1.创建子类实例时,无法向父类构造函数传参

 2.父类的所有引用属性会被所有子类共享,更改一个子类的引用属性,其他子类也会受影响

代码:
function Parent(){
this.age=20
}
function Child(){
this.name="王五"
}
Child.prototype=new Parent()    //给子的原型上new
let o = new Child()        
 
借用构造函数的形式:在子类构造函数中调用父类构造函数,可以在子类构造函数中使用call()apply()方  法改变this指向
优点:能实现属性的继承,也可以在子类型创建实例时为父类型传递参数。
缺点:无法继承父类原型上的属性与方法
代码:
function Parent(){
this.age=20
}
function Child(){
this.name="王五"
Parent.call(this)
}
let o = new Child()
 
组合式继承:就是结合构造函数继承和原型链继承实现的
核心:使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承
function Parent(){
this.age=20
}
function Child(){
this.name="王五"
Parent.call(this)
}
Child.prototype=new Parent()
let o = new Child()
 
 
 
 
 
 
 
 
 
 

 

posted @   爱吃蔬菜的小红帽  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示