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

news/2025/4/2 6:22:54/

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过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 高级程序设计

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


http://www.ppmy.cn/news/1372351.html

相关文章

1、Ajax、get、post、ajax,随机颜色

一、Ajax初始 1、什么是Ajax? 异步的JavaScript和xml 2、xml是什么? 一种标记语言,传输和存储数据----------现在用JSON传输数据 3、Ajax的作用 局部加载 可以使网页异步更新 4、Ajax的原理或者步骤(6步) 创建Ajax对象 if (window.X…

在Vue中搭建Three.js环境(超详细、保姆级),创建场景、相机、渲染器《一》

目录 Three.js简介创建vue项目引入Three.js实际操作环节文件目录创建初始化场景、相机 Three.js简介 Three.js 是一款基于 WebGL的 JavaScript 3D 库,它封装了 WebGL API,为开发者提供了简单易用的 API 来在 Web 浏览器中展示 3D 图形。Three.js 提供了…

ElasticSearch架构介绍及原理解析

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,用于处理大量的数据。它是由 Elasticsearch BV 公司开发,并且是用 Java 语言编写的。Elasticsearch 基于 Lucene 搜索引擎,提供了 RESTful API,允许你通过 JSON 格式的请…

pdf属性修改教程 如何修改pdf 属性?

PDF(Portable Document Format)是一种广泛使用的文件格式,用于呈现文档,包括文本、图像、图形和其他元素。PDF文件的一个特点是其属性,这些属性包括文件的创建日期、修改日期、作者、标题、主题、关键词等。这些属性在…

tomcat动静分离和负载均衡

目录 引言 1.实验环境搭建 2.部署Nginx服务器及配置静态页面Web服务 3.部署Tomcat服务及配置动态页面Web服务 4.实验验收 动态页面 静态页面 引言 tomcat服务既可以处理动态页面,也可以处理静态页面;但其处理静态页面的速度远远不如nginx和apache…

材料物理 (HIT) 笔记-2

原内容请参考哈尔滨工业大学何飞教授:https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》(哈尔滨工业大学出版社) 三…

mysql SQL优化工作记录(1)

今天生产数据库预警了,马上拉一下慢日志,定位了慢SQL,发出来大家一起学习 select a.fid,a.fname,a.fremark from a where a.fid -1 fid是表的主键,按主键查询怎么会出现扫全表的情况了,原因是fid是字符串类型&#…

Root of AVL Tree (25)

1、题意 求所有数插入后&#xff0c;根节点是哪个数 2、两种代码&#xff1a; 2.1 代码1&#xff1a; #include<iostream> #include<algorithm>using namespace std; const int N 30; int l[N],r[N],v[N],h[N],idx;void update(int u)// 计算子树的高度 {h[…