JavaScript高级原型继承学习历程分享(02)

本文详细解析了JavaScript中借用继承的实现方式,通过call方法在子类构造函数中调用父类构造函数,实现了属性的完美继承。同时指出直接借用继承在调用父类方法时存在的问题,并提出通过组合继承(原型+借用)来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

借用继承

先说一下它是通过call来实现的.

在这里得介绍一下this :

  • this 在普通函数中指向的事widow;
  • this 指向谁,要看函数的调用者是谁;
  • 在构造函数中this指的是当前创建对象;
// 创建父类构造函数
function Person(name, age){
    this.name = name;
    this.age = age;
};

// 父类构造函数原型
Person.prototype.a = function(){
    console.log('你好!');
};


// 创建子类构造函数
function Student(name, age){
    // this 值得是当前的创建对象
    Person.call(this, name, age);
};


// 创建对象
var stu1 = new Student('张三', 15);

在上面的代码段中:

                                  Person.call (this, name, age)       ;

通过这个方法来实现继承:

                                  函数名.call (调用者, 实参, 实参);

 

总结一下:

  1.  优点:完美的继承属性
  2.  问题:调用父类的方法时,无法调用 / 会在浏览器报错
  3.  原因:找不到,因为没有更改子类的原型
  4.  解决办法:通过组合继承来实现(原型 + 借用)

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值