JS 的继承

什么是继承呢

就是子类可以使用父类的所有功能,并对这些功能进行扩展。

继承的方式

原型链继承

mdn:当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象( object )都有一个私有属性(称之为 __ proto __ )指向它的构造函数的原型对象(prototype )。该原型对象也有一个自己的原型对象( __ proto __ ) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。
由上可知,每个对象都会有__ proto __的私有属性指向原型对象prototype,直到原型对象的原型为空。

__ proto __ 和prototype的区别是什么呢
__ proto __ 和prototype都存着原型的地址,prototype放在函数上,而__ proto __放在新生成的对象上
原型链继承
综上所述我们又可以得出一些结论
原型链继承

 function Animal(color){
     this.color = color
 }
 Animal.prototype.move = function(){}
 function Dog(color, name){
     Animal.call(this, color) 
     this.name = name
 }
 // 下面三行实现 Dog.prototype.__proto__ = Animal.prototype
 function temp(){}
 temp.prototype = Animal.prototype
 Dog.prototype = new temp()
 Dog.prototype.constuctor = Dog 
 Dog.prototype.say = function(){ console.log('汪')}
 var dog = new Dog('黄色','阿黄')
类继承

实现类继承首先需要一个父类,在js中实际上是没有类的概念,在es6中class虽然很像类,但实际上只是es5上语法糖而已

//父类Actor 
class Actor {
    constructor(name = '演员') {
        this.name = name;
    }
    act() {
        console.log(`${this.name}在拍剧`)
    }
}
//继承父类的字类HandsomeMan
class HandsomeMan extends Actor {
    constructor(name = '胡歌') {
        //继承父类属性
        super(name);
    }
    act() {
        //继承父类方法
        super.act()
    }
}
let handsomeMan = new HandsomeMan()
handsomeMan.act()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值