JavaScript面向对象 继承的几种写法以及优缺点

继承的几种写法以及优缺点

继承是指子类继承父类的特征和行为,使得子类具有父类的实力域和方法
继承的好处:

  • 提高代码的复用
  • 提高代码的维护性
  • 使得类与类产生了联系

有三种方法:
一. 原型链继承

  1. 创建父类
  2. 创建子类
  3. 子类.prototype = new 父类函数名( )
  4. 实例化 子类 得到对象

优点:继承所有
缺点:不能给父类 构造函数传参

function Fu(name,age){
        this.name=name;
        this.age=age;
}
Fu.prototype.say=function(){

}
function Zi(){
            
}
var obj=new Zi();
console.log(obj);

二. 类式继承( 借用构造函数继承 / 改变this指向 实现继承)

  1. 创建父类
  2. 创建子类
  3. 子类内部调用父类,改变父类this 指向 (this,参数,参数…)
  4. 实例化 子类 得到对象

优点:可以给父类传参
缺点:不能继承父类的原型对象

function Fu(name,age){
        this.name=name;
        this.age=age;
}
Fu.prototype.say=function(){

 }
function Zi(name,age){
     Fu.call(this,name,age);
    // Fu.apply(this,[name,age]);
    // Fu.bind(this)(name,age);
    // Fu.bind(this,name,age)();
}
Zi.prototype=new Fu();
var obj=new Zi("张",20);
console.log(obj);

三. 组合继承 ( 原型继承+类式继承 )

function Fu(name,age){
       this.name=name;
       this.age=age;
}
Fu.prototype.say=function(){

}
function Zi(name,age){
        Fu.call(this,name,age);
}
Zi.prototype=new Fu();
var obj2=new Zi("张",20);
console.log(obj2);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值