继承的几种方式

本文详细介绍了JavaScript中实现继承的多种方式,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、Object.create方法等,深入解析了各自的优缺点和适用场景,帮助开发者更好地理解和运用JavaScript的继承机制。
摘要由CSDN通过智能技术生成
原型继承
    利用自定义原型的方式来实现继承关系
    核心: 子类的原型指向父类的实例
    可以继承父类的 属性(构造函数体内) 和 方法(构造函数原型)
    缺点:
        没有自己的原型
        继承下来的属性不在自己身上,在原型上
    不能直接修改原型上的属性和方法,可以通过__proto__
function Person(name , age){
    this.name = name;
    this.age = age;
}
Person.prototype.say = function(){
    console.log('海贼王');
}
function Son(gender , ...arg){
    //...arg 表示剩余参数,类型为一个数组,将剩余所有参数都存在数组中
    this.gender = gender;
    Person.call(this , ...arg)
}
let s = new Son('男' , '路飞' , 20)
console.log(s);
//输出:Son {gender: '男', name: '路飞', age: 20}

 

借助构造函数方法继承
    在子类中调用构造函数,使用call改变this指向,变成this指向子类的实例对象,父类上添加的属性相当于给子类实例上添加的属性
//父构造函数
function Father(name , age){
    //this指向父构造函数的对象实例
    this.name = name;
    this.age = age;
}
//子构造函数
function Son(name , age , like){
    //this指向子构造函数的对象实例
    this.like = like;
    Father.call(this , name , age);
    //将父元素中的this运用call改变为子元素中的this
    //将父类的属性和方法添加在子类自己身上
    //缺点:只能继承父类的属性(构造函数体内),不能继承方法(原型上的内容)
}
var son = new Son('路飞' , 20 , '海贼王')
console.log(son);
//输出:Son {like: '海贼王', name: '路飞', age: 20}

 

组合继承
    将 原型继承 和 借用构造函数方式继承 结合使用
    将子类的原型对象=父类上的原型对象
    缺点: 重复的实例属性,一次在实例属性上,一次在原型属性上
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值