原型链式继承

本文介绍了JavaScript中函数对象的prototype属性以及构造函数的隐式原型。通过Dog和Corky两个构造函数展示了如何使用原型链进行继承,包括使用call方法实现属性继承以及通过设置Corky.prototype来继承Dog的原型方法。同时,指出了在继承过程中constructor属性的修正问题,确保Corky的constructor正确指向Corky自身。
摘要由CSDN通过智能技术生成

每个函数对象都会有一个phototype属性,这个属性指向的对象为原型对象。
这个函数如果作为普通函数调用,则原型函数没有任何作用;如果作为构造函数调用,那么它的实例就会拥有一个隐含的属性__poroto__,也叫做隐式原型,隐式原型指向构造函数的原型对象。

function Dog(name,color,age){
	this.name = name;
	this.color = color;
	this.age = age;
}
Dog.prototype.run = function () {
	console.log('我可以跑')
}
  Dog.prototype.eat = function () {
	console.log('我很能吃')
  }
function Corky(name,color,age){
	Dog.call(this,name,color,age);
}
// 原型链式继承 让子类的原型指向父类的一个实例
Corky.prototype = new Dog();
//我们需要手动的将Corky原型上的构造器属性 重新指向Corky
Corky.prototype.constructor = Corky();
var d1 = new Dog('wangcai','black',12);
var c1 = new Corky('duomi','write',8);

d1.run();
c1.run();
console.log(d1);
console.log(c1);

我们定义了Dog构造函数,里面定义了狗的一些属性,姓名,颜色、年龄等;定义了Corky构造函数,用call()方法继承了Dog的属性;为Dog定义了原型方法,通过更改Corky的原型对象,让它来继承Dog的原型方法,所以Corky也拥有了dog的跑、跳方法。但此时Corky的constructor属性找不到它对应的构造函数,所以我们需要手动指向Corky
图解
这是对上面代码解说的一个图解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值