千家信息网

javascript原型链怎么实现继承

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了javascript原型链怎么实现继承的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript原型链怎么实现继承文章都会有所收获,下面我们一起
千家信息网最后更新 2026年10月31日javascript原型链怎么实现继承

这篇文章主要介绍了javascript原型链怎么实现继承的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript原型链怎么实现继承文章都会有所收获,下面我们一起来看看吧。

继承的几种方式:

① 使用构造函数实现继承

function Parent(){  this.name = 'parent';}function Child(){Parent.call(this); //在子类函数体里面执行父类的构造函数this.type = 'child';//子类自己的属性}

Parent.call(this),this即实例,使用this执行Parent方法,那么就用this.name = 'parent'把属性

挂载在了this(实例)上面,以此实现了继承。

缺点:以上只是让Child得到了Parent上的属性,Parent的原型链上的属性并未被继承。

② 使用原型链实现继承

function Parent(){  this.name = 'parent';}function Child(){  this.type = 'child';}Child.prototype = new Parent();

解释:Child.prototype === Chlid实例的__proto__ === Child实例的原型

所以当我们引用new Child().name时,Child上没有,然后寻找Child的原型child.__proto__即Child.prototype即new Parent(),Parent的实例上就有name属性,所以Child实例就在原型链上找到了name属性,以此实现了继承。

缺点:可以看出,Child的所有实例,它们的原型都是同一个,即Parent的实例:

var a = new Child();var b = new Child();a.__proto === b.__proto__; //true

所以,当使用 a.name = 'a'重新给name赋值时,b.name也变成了'a',反之亦然。

用instanceof和constructor都无法确认实例到底是Child的还是Parent的。

③ 结合前两种取长补短

function Parent(){  this.name = 'parent';}function Child(){  Parent.call(this);  this.type = 'child';}Child.prototype = new Parent();

缺点:在Child()里面用Parent.call(this);执行了一次Parent(),然后又使用Child.prototype = new Parent()执行了一次Parent()。

改进1:

function Parent(){  this.name = 'parent';}function Child(){  Parent.call(this);  this.type = 'child';}Child.prototype = Parent.prototype;

缺点:用instanceof和constructor都无法确认实例到底是Child的还是Parent的。

原因: Child.prototype = Parent.prototype直接从Parent.prototype里面拿到constructor,即Parent。

改进2:

function Parent(){  this.name = 'parent';}function Child(){  Parent.call(this);  this.type = 'child';}Child.prototype = Object.create(Parent.prototype);Child.prototype.constructor = Child;

画图说明吧:

var a = new Child();

所以这样写我们就构造出了原型链。

关于"javascript原型链怎么实现继承"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"javascript原型链怎么实现继承"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

原型 实例 属性 缺点 函数 知识 内容 子类 篇文章 还是 取长补短 价值 原因 反之亦然 只是 操作简单 文章 方式 方法 易懂 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 智能科技公司是互联网公司吗 狮子座互联网科技有限公司 互联网女皇 腾讯科技 亿账通互联网科技 互联网 科技服务平台 广西拼得多互联网科技有限公司 上海电发互联网科技有限公司 恒银科技与互联网金融 小米互联网科技园设置 昭通互联网科技选哪家 互联网媒体平台算高科技产业 朱啸虎曾投资哪些互联网科技企业 珠海东科互联网科技有限公司 江苏互联网智能科技产品出厂价 互联网高科技行业有哪些企业 广西泛欧互联网科技有限公司 长沙易易互联网科技有限公司 株洲百竞科技的互联网营销顾问 武汉亿视互联网科技有限公司 瑰夏咖啡 奇酷互联网科技 万易互联网科技有限公司 互联网与未来科技 互联网金融 科技创新 齐家互联网科技有限公司 金融科技和互联网金融 华脉科技工业互联网产品 深圳市运趣互联网科技有限公司 10位科技互联网大佬
0