JS构造函数继承---------直接继承父构造函数的prototype

本文介绍了JavaScript中构造函数的prototype继承,重点讨论了如何直接继承父构造函数的prototype。通过示例解释了Objfather和Objchildren构造函数的关系,以及如何通过设置constructor来确保正确指向。文章还提到了继承过程中的问题及解决方法。

理解prototype继承之前先理解prototype、__proto__、constructor

function Objfather (){
       this.role = "父亲";

}

console.log(Objfather.prototype)         

Objfather.prototype中有两个属性。分别是 constructor和__proto__
constructor指向当前原型的构造函数,所以这里还是指向Objfather本身。
__proto__指向构造该对象的构造函数的prototype(因为Objfather上级为Object),所以这里指向Object.prototype


如下有一个子构造函数
function Objchidren(name,age){
       this.name = name;

       this.age = age;
}

Objfather.prototype = {              //为父构造函数添加原型
      constructor:Objfather,        //将构造器指向父构造函数,否则的话这里会指向顶层Object的构造函数
      eat:function(){                      //挂载吃饭的方法
             console.log("按时吃饭");
      }
}

第一步:Objchidren.prototype = Objfather.prototype;
第二步:let chidren1 = new Objchidren("小明",11);
第三步:console.log(chidren1.eat());                  //按时吃饭

上方就实现了继承父构造函数但是有一个问题是Objchidren.prototype.constructor此时是指向Objfather的构造函数的
所以在第一步下面应该将Objchidren.prototype.constructor = Objchidren;将构造器指向回Objchidren的构造函数




 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值