带你读《现代Javascript高级教程》七、原型和原型链(3)

简介: 带你读《现代Javascript高级教程》七、原型和原型链(3)

带你读《现代Javascript高级教程》七、原型和原型链(2)https://developer.aliyun.com/article/1349649?groupCode=tech_library


3.原型链

原型链是 JavaScript 中对象之间通过原型链接起来的机制,用于实现属性和方法的继承。它是由一系列的原型对象组成,每个对象都有一个指向其原型对象的连接,形成了一条链式结构。

 

原型链的概念可以通过以下方式解释:在 JavaScript 中,每个对象都有一个内部属性 [[Prototype]](__proto__),它指向该对象的原型。当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript 引擎会自动沿着原型链向上查找,直到找到匹配的属性或方法或者到达原型链的顶部(Object.prototype)

 

让我们通过一个示例来说明原型链的概念和工作原理:

 

// 父对象构造函数function Parent() {
  this.name = "Parent";}
// 在父对象原型上添加方法Parent.prototype.sayHello = function() {
  console.log("Hello, I am " + this.name);};
// 子对象构造函数function Child() {
  this.name = "Child";}
// 通过原型继承建立子对象和父对象的连接Child.prototype = Object.create(Parent.prototype);
// 创建子对象实例var child = new Child();
// 调用父对象原型上的方法
child.sayHello(); // 输出: "Hello, I am Child"

 

在这个示例中,我们定义了一个父对象构造函数 Parent,它有一个属性 name 和一个原型方法 sayHello。然后,我们定义了一个子对象构造函数 Child,它也有一个属性 name。通过 Object.create() 方法,我们将子对象的原型连接到父对象的原型上,建立了子对象和父对象之间的原型链关系。

 

最后,我们创建了子对象实例 child,并调用了父对象原型上的方法 sayHello

 

以下是一个简单的原型链示意图:

 

 

+----------------------+
           |     Object.prototype |
           +----------------------+
                      ^
                      |
           +----------------------+
           |   Parent.prototype    |
           +----------------------+
                      ^
                      |
           +----------------------+
           |   Child.prototype     |
           +----------------------+
                      ^
                      |
           +----------------------+
           |     Child instance    |
           +----------------------+

 

在这个示意图中,Object.prototype 是所有对象的顶层原型,Parent.prototype 是父对象的原型,Child.prototype 是子对象的原型,Child instance 是基于子对象构造函数创建的对象实例。

 

原型链的重要性体现在以下几个方面:

 

  • 继承:原型链允许对象通过继承获取其他对象的属性和方法。子对象可以继承父对象的属性和方法,而父对象又可以继承更上层对象的属性和方法,以此类推。
  • 代码复用和共享:通过原型链,我们可以在原型对象上定义方法和属性,从而实现多个对象之间的方法共享和代码复用。这样可以节省内存空间,提高性能,并减少代码的冗余。
  • 扩展和修改:通过在原型对象上添加新的方法和属性,我们可以在整个原型链中的所有对象实例上访问和使用这些扩展。这样可以方便地对现有对象进行功能扩展和修改。


带你读《现代Javascript高级教程》七、原型和原型链(4)https://developer.aliyun.com/article/1349647?groupCode=tech_library

相关文章
|
2月前
|
JavaScript 前端开发
如何在JavaScript中实现基于原型的继承机制
【8月更文挑战第14天】如何在JavaScript中实现基于原型的继承机制
25 0
|
3月前
|
JavaScript
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
148 0
|
7天前
|
JSON JavaScript 前端开发
js原型继承|26
js原型继承|26
|
3天前
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
9 0
|
1月前
|
JavaScript 前端开发
JavaScript基础知识-原型(prototype)
关于JavaScript基础知识中原型(prototype)概念的介绍。
29 1
|
2月前
|
JavaScript NoSQL 前端开发
|
2月前
|
JavaScript 前端开发
JavaScript中什么是原型?有什么用?
JavaScript中什么是原型?有什么用?
15 1
|
2月前
|
JavaScript 前端开发 Java
什么是JavaScript原型对象
【8月更文挑战第2天】什么是JavaScript原型对象
50 9
|
2月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
53 0
|
2月前
|
JavaScript 前端开发 开发者
揭开JavaScript的神秘面纱:原型链背后隐藏的继承秘密
【8月更文挑战第23天】原型链是JavaScript面向对象编程的核心特性,它使对象能继承另一个对象的属性和方法。每个对象内部都有一个[[Prototype]]属性指向其原型对象,形成链式结构。访问对象属性时,若当前对象不存在该属性,则沿原型链向上查找。
27 0
下一篇
无影云桌面