JavaScript 原型链继承:掌握面向对象的基础

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 摘要:
    • 引言:
    • 正文:
      • 1. 原型链继承的基本原理🔗
      • 2. 原型链继承的实现🔨
      • 3. 原型链继承的优势和不足🤖
      • 4. 原型链继承的使用场景🔨
    • 总结:🎯
    • 参考资料:📚

摘要:

💡 本文将带你深入了解 JavaScript 中的原型链继承,这是一种强大的继承机制,能够帮助我们更有效地组织和复用代码。通过原型链继承,我们可以创建具有继承关系的对象,从而实现代码的复用和扩展。

引言:

🌱 大家好,我是阿珊。在 JavaScript 中,原型链继承是一种非常常见的继承机制。它基于原型对象和实例之间的关系,实现对象之间的继承。今天,我将和大家一起探讨原型链继承的原理和应用,帮助大家更好地掌握面向对象编程的基础知识。

正文:

1. 原型链继承的基本原理🔗

JavaScript 中,每个对象都有一个指向其原型对象的引用,这个原型对象也可能有自己的原型,从而形成一个链式结构

当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,解释器会沿着原型链向上查找,直到找到匹配的属性或方法为止。

2. 原型链继承的实现🔨

要实现原型链继承,我们需要使用 Object.create() 方法来创建一个空对象,然后将这个空对象的原型设置为我们想要继承的构造函数的 prototype 属性。

接下来,我们可以对这个空对象进行扩展,添加自己的属性和方法。这样,我们就实现了原型链继承。

示例代码如下:

function Parent() {
  this.parentProperty = true;
}
Parent.prototype.getParentProperty = function() {
  return this.parentProperty;
};
function Child() {
  this.childProperty = false;
}
// 实现原型链继承
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
Child.prototype.getChildProperty = function() {
  return this.childProperty;
};
const child = new Child();
console.log(child.getParentProperty()); // true
console.log(child.getChildProperty()); // false

3. 原型链继承的优势和不足🤖

优势:

  • 实现简单,只需修改原型对象即可;
  • 能够实现基于原型的方法共享,提高内存利用率;
  • 易于理解和使用,符合 JavaScript 的面向对象编程风格。

不足:

  • 继承层次过多时,性能可能受到影响;
  • 原型链继承会导致对象之间的引用关系变得复杂,不利于调试。

4. 原型链继承的使用场景🔨

原型链继承是一种实现面向对象编程中继承的方式,主要通过原型对象(prototype)来实现的。

以下是一个简单的原型链继承的例子:

function Parent() {
  this.parentProperty = true;
}

Parent.prototype.getParentProperty = function() {
  return this.parentProperty;
};

function Child() {
  this.childProperty = false;
}

// 继承自 Parent
Child.prototype = new Parent();

var childInstance = new Child();
console.log(childInstance.getParentProperty()); // 输出:true

在这个例子中,Child 继承自 Parent。通过创建 Parent 的一个实例并将其赋值给 Child.prototypeChild 就继承了 Parent 的属性和方法。

这种继承方式的主要优点是代码复用性高,子类可以继承父类的属性和方法,同时子类也可以修改或扩展这些属性和方法

但是,原型链继承也存在一些缺点,例如:

  1. 原型对象会共享属性,如果多个子类实例修改了原型对象的属性,那么其他子类实例的该属性也会被修改。
  2. 创建子类实例时,不能像构造函数那样传递参数

因此,原型链继承的使用场景主要是在需要代码复用性和扩展性的情况下,例如在创建一些通用的基础类或者工具类时。

总结:🎯

本文介绍了 JavaScript 中的原型链继承,这是一种基于原型对象和实例之间关系的继承机制。通过原型链继承,我们可以实现代码的复用和扩展,提高开发效率。同时,我们还讨论了原型链继承的优势和不足,以便大家能够在实际开发中更好地运用这一知识点。

参考资料:📚

  1. JavaScript 原型链继承
  2. JavaScript 高级程序设计

感谢大家的阅读,希望这篇文章能帮助到你!💖如果你有任何问题或建议,欢迎在评论区留言哦!💬

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433011.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot + jpa + 达梦数据库兼容 Mysql的GenerationType.IDENTITY主键生成策略

导入达梦数据库对hibernate的方言包 <dependency><groupId>com.dameng</groupId><artifactId>DmDialect-for-hibernate5.6</artifactId><version>8.1.2.192</version></dependency>配置文件中添加方言配置和主键生成策略配置…

(译) 理解 Prometheus 的范围向量 (Range Vector)

Prometheus 中 Range Vector 的概念是有一点不直观的&#xff0c;除非你彻底阅读并理解了官方提供的文档。谁会这样做呢&#xff0c;去读官方文档&#xff1f;大多的人应该会花些错误的时间去做了一些错误的事情&#xff0c;然后随机去寻找一篇像本文一样的文章去理解这个概念&…

2024年Java者未来的出路在哪里,java多线程面试

重要 大环境对于我们能力要求越来越高&#xff0c;医学专家又说今年冬天新冠肺炎将“席卷重来”。 如果疫情再次爆发&#xff0c;势必将再次影响企业的正常运作&#xff0c;一波裁员浪潮你又能否抗住&#xff1f; 不管如何&#xff0c;明年金三银四又是一波跳槽时机&#xf…

AbaqusCST仿真软件功能对比简介

一、功能对比 支持维度CST&#xff1a;用于设计、分析和优化电磁部件及系统。适用于整个 EM 范围内各类应用领域的电磁场解算。Abaqus&#xff1a;ABAQUS 是一套功能强大的工程模拟的有限元软件&#xff0c;其解决问题的范围从相对简单的线性分析到复杂的非线性问题。 ABAQUS 包…

基于springboot+vue的精简博客系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

flutter弹窗动画,2024年上半年最接地气的Android面经

正文 腾讯研发人数将近 2 万人&#xff0c;T4 级别的人数大概也不超过 500 人&#xff0c;这还是在近两年 T3 到 T4 级别人数增多的情况下。 该资料一共有五大章节&#xff0c;452页&#xff0c;是这位腾讯T4大佬耗时半个月熬夜整理出来的。 目录 第一章 深入解析 Binder. …

Java面试题【必知必会】Mybatis常见面试题(2024)

近期一直在准备面试&#xff0c;所以为了巩固知识&#xff0c;也为了梳理&#xff0c;整理了一些java的基础面试题&#xff01;同时也希望各位英雄和女侠能够补充&#xff01;不胜荣幸&#xff01;&#xff01;&#xff01; 名称地址Java面试题【必知必会】基础&#xff08;202…

Web3 赛道屠夫:「铁顺」是谁?

撰文&#xff1a;Terry 加密世界从不缺传奇故事&#xff0c;从不会编程的「失业青年」Hayden Adams 一入 Web3 便推出巅峰之作 Uniswap&#xff08;《交易平台搅局者「Uniswap 之父」&#xff0c;不会编程的「失业青年」&#xff0c;出手即巅峰》&#xff09;&#xff0c;到 An…

VMware虚拟机安装linux教程

CentOS7下载 下载 (centos.org)https://www.centos.org/download/新建虚拟机 选择自定义安装 这里要注意兼容性&#xff0c;如果是VMware12创建的虚拟机复制到VM11、10或者更低的版本会出现一不兼容的现象。如果是用VMware10创建的虚拟机在VMware12中打开则不会出现兼容性问题…

二,几何相交----2.线段相交测试----(1)bruteforce

将与X轴平行的线段扩展到一般平面上的线段。 则可以使用burteforce两两测试&#xff0c;使用四次toleft即可。比如&#xff0c;线段(a,b)和线段(c,d)相交&#xff0c;必然线段的两个端点在另一个线段的两侧。这样时间复杂度就是成为了o(n2) 其实&#xff0c;时间复杂度可以降低…

半导体分析实验常用清洗器皿特氟龙塑料PFA实验室耗材

晶圆是一种用于制造集成电路和其他半导体器件的基础材料&#xff0c;通常是由单晶硅制成的圆形薄片&#xff0c;随着半导体行业的兴起&#xff0c;其作为行业内常用元件的基础材料&#xff0c;为了保证它可以正常工作&#xff0c;晶圆表面要保持洁净&#xff0c;无不相关的颗粒…

酷开科技以酷开系统为媒介,打造欢乐生活场景

家人相聚在一起的时光总是那么美好&#xff0c;在欢聚的日子里&#xff0c;我们也总是希望能够让时间变得慢一点&#xff0c;再慢一点&#xff0c;但是随着春节假期的结束&#xff0c;很多人已经开始了新一年的忙碌&#xff0c;大家纷纷回到工作、学习岗位&#xff0c;回归之前…

自动驾驶预测与决策规划(nuplan数据集)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.概述 2 数据采集 3.开环与闭环仿真 4.数据注释 5.场景 6.规划框架 6.1Train 6.2Simulation 6.3Metric 6.4Visualization 7.下载…

如何使用DS file+cpolar内网穿透实现远程访问本地群晖NAS传输文件

文章目录 1. 群晖安装Cpolar2. 创建TCP公网地址3. 远程访问群晖文件4. 固定TCP公网地址5. 固定TCP地址连接 DS file 是一个由群晖公司开发的文件管理应用程序&#xff0c;主要用于浏览、访问和管理存储在群晖NAS&#xff08;网络附加存储&#xff09;中的文件。这个应用程序具有…

阿里云2024年有什么优惠活动?阿里云30个热门优惠活动汇总

对于想要购买阿里云各种云产品的用户来说&#xff0c;不管是新用户还是老用户&#xff0c;最为关心的是阿里云当下有哪些优惠活动&#xff0c;本文汇集了2024年阿里云官方目前正在进行中的所有优惠活动&#xff0c;其中优惠券和代金券活动4个&#xff0c;官方精选活动10个&…

鹅厂打工8年,我为啥突然裸辞?

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ 原文&#xff1a;以下文章来源于沐洒 &#xff0c;作者ASCII26 今天跟大家分享一个重磅消息&#xff0c;沐洒终于从腾讯离职了&#xff01; 不知不觉已经在鹅厂打了8年工&#xff0c;如果说在大厂里工作如同在高校…

基于 HBase Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数&#xff08;可选&#xff09; 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新…

各中间件性能、优缺点对比

参考资料&#xff1a; Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点&#xff1f;

【VTKExamples::PolyData】第四十八期 ShrinkPolyData

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例ShrinkPolyData,并解析接口vtkShrinkPolyData,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. ShrinkPol…

外汇天眼:阳光男网友邀请投资全是假,2位女性受害者遭诈2400万

随着线上投资风气日渐兴盛&#xff0c;各种国际外汇与加密货币的投资诈骗也层出不穷。 2月下旬&#xff0c;台湾刑事警察局指出近期有2位女性受害者就因误信假网友的话术&#xff0c;结果总共损失超过76万颗USDT&#xff0c;总价值约新台币2400万。 第一位受害者林小姐是在脸书…