千家信息网

javascript原型链怎么实现继承

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要介绍了javascript原型链怎么实现继承的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript原型链怎么实现继承文章都会有所收获,下面我们一起
千家信息网最后更新 2025年12月01日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.prototypenew 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安全错误 数据库的锁怎样保障安全 怎么增加表行数据库 永康市广众网络技术 淘宝软件开发店铺怎么引入流量 真实的港股软件开发搭建 北京开放大学软件开发 Notes数据库删了 恢复 数据库主要特点 sql数据库受欢迎吗 怎么部署云服务器上 软件开发的成本与质量的关系 软件开发项目的市场现状 网络安全人才要掌握的技术有哪些 逊克im即时通讯软件开发 国三数据库技术上机 武汉电商网络安全维护条件 江门通讯软件开发费用是多少 广东知名软件开发价格 数据库字段可以是0吗 难道吉他谱软件开发 悬镜服务器安全卫士 牟平晟峰软件开发有限公司 北京未来网络技术有限公司 家里有网但是显示无法连接服务器 网络安全的背景 代理服务器实现 网络安全因注意问题 世界上最简单的网络安全手抄报 派出所网络安全协议 乡镇贯彻网络安全的具体措施 深圳前沿软件开发有限公司怎样
0