广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript原型链的原理是什么
  • 452
分享到

JavaScript原型链的原理是什么

2024-04-02 19:04:59 452人浏览 泡泡鱼
摘要

这篇文章主要讲解了“javascript原型链的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript原型链的原理是什么”吧!解析原型

这篇文章主要讲解了“javascript原型链的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript原型链的原理是什么”吧!

解析原型链

原型链是JavaScript这门语言设计的十分有意思的地方之一。在解析原型链之前,我们需要了解以下几个重要的概念。

构造函数

构造函数是一种比较特殊的函数,它通常被人为地约定为函数名的首字母需要大写,且必须通过new操作符来进行调用(与普通函数的本质上的区别),它的作用是用来创建特定类型的对象。在JavaScript中也一些原生的构造函数,如Object、Array、Function等等。

实例

每当构造函数被new运算符调用时,都会创建出一个新对象,这个过程被称为实例化。而这个对象就被称为实例。也就是说任何对象都是一个实例,但关键在于创建这个实例的构造函数是谁?以及它的原型是谁?

原型

构造函数内部有个特殊的属性prototype,这个属性指向了一个对象,没错它就是原型也称为原型对象。原型对象是一个十分特殊存在,每当构造函数实例化一个对象时,这个实例的[[Prototype]]会默认指向构造函数的prototype。实例对象可以通过自身的[[Porototyoe]]属性找到原型对象,而原型对象可以通过自身的construcor属性找到是哪个构造函数创建了这个实例。(注意许多浏览器会把属性[[Prototype]]替代为属性__proto__。)

构造函数、实例和原型值之间的关系

为了进一步弄清楚构造函数、实例和原型之间的关系,我们可以从下面这张图片开始

JavaScript原型链的原理是什么

  • 实例dog通过自身的[[Prototype]]属性找到了原型Dog.prototype

  • 构造函数Dog通过自身的prototype属性找到了原型Dog.prototype

  • 原型Dog.prototype则通过自身的constructor属性找到了构造函数Dog

  • 实例dog通过constructor属性找到了构造函数Dog。

为实例dog通过constructor属性找到了构造函数Dog这个过程不用实线箭头呢?这里到底有什么细节呢?,让我们再来看一段简单的代码和一张图片

function Dog(name){     this.name = name;      } let dog = new Dog("cheems");

JavaScript原型链的原理是什么

从代码结合图片来看,我们不难发现实例dog上并没有constructor这个属性,而原型对象才拥有这个属性,那么实例是如何获取到这个属性呢?  ,这就涉及到了JavaScript中一种特殊的行为——委托,下面我们就来了解一下什么是委托。

委托

当我们尝试去获取对象的某个属性值,但该对象并没有这个属性时,那么JavaScript  会试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,依次类推直到该过程最后到达终点Object.prototype,如果仍然没有找到就返回undefined。这个过程被称为委托。

现在你就明白了,实例dog正是通过委托这种方式找到了创建自己的构造函数。在明白这一点之后,原型链也就呼之欲出了。

原型链

如果在第一个对象上没有找到需要的属性或者方法引用,引擎就会继续在它的[[Prototype]]指向的对象上进行查找。同理如果后者中也没有找到需要的引用就会继续查找它的[[Prototype]],依次类推直到到达Object.prototype,这一系列对象的链接被称为原型链。

我们可以用一张图来表示下

JavaScript原型链的原理是什么

由于构造函数也是对象,所以它同样具有构造函数和原型。构造函数的prototype是实例的原型,并非自身的原型。自定义的构造函数同样需要借助[[Prototype]]找到原型,进而找到创建自己的构造函数——即原生构造函数Function,但请注意原生的构造函数Function的[[Prototype]]是指向了Function.prototype。

console.log(Function.__proto__ === Function.prototype); // true

所有的原型对象都可以沿着原型链一直寻找至到找到最后的原型对象Object.prototype,然后Object.prototype再往上寻找就是Null,用来表示此处没有对象。

感谢各位的阅读,以上就是“JavaScript原型链的原理是什么”的内容了,经过本文的学习后,相信大家对JavaScript原型链的原理是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JavaScript原型链的原理是什么

本文链接: https://www.lsjlt.com/news/72647.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript原型链的原理是什么
    这篇文章主要讲解了“JavaScript原型链的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript原型链的原理是什么”吧!解析原型...
    99+
    2022-10-19
  • javascript的原型和原型链是什么
    小编给大家分享一下javascript的原型和原型链是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-19
  • JavaScript原型与原型链是什么
    这篇文章主要介绍“JavaScript原型与原型链是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript原型与原型链是什么”文章能帮助大家解决问题...
    99+
    2022-10-19
  • JavaScript中的原型和原型链是什么
    这篇文章主要介绍“JavaScript中的原型和原型链是什么”,在日常操作中,相信很多人在JavaScript中的原型和原型链是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript中的原型和...
    99+
    2023-06-21
  • JavaScript中原型和原型链是什么
    本篇文章给大家分享的是有关JavaScript中原型和原型链是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。而原型、原型链就是其中之一。每...
    99+
    2022-10-19
  • JavaScript原型链是什么
    这篇文章主要为大家展示了“JavaScript原型链是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript原型链是什么”这篇文章吧。1、构造函数和实例假设你声明一个方法叫做Fo...
    99+
    2023-06-25
  • Javascript的原型和原型链是什么意思
    这篇文章主要介绍Javascript的原型和原型链是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、为什么要使用原型?怎样去理解原型的出现1、对象字面量创建对象的缺点想要介绍原型,就不得不提为什么我们要使用...
    99+
    2023-06-29
  • javascript中的原型链是什么
    本篇内容主要讲解“javascript中的原型链是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中的原型链是什么”吧! ...
    99+
    2022-10-19
  • JavaScript原型链指的是什么
    这篇文章主要为大家展示了“JavaScript原型链指的是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript原型链指的是什么”这篇文章吧。1...
    99+
    2022-10-19
  • JavaScript中的原型和原型链怎么理解
    这篇文章主要介绍“JavaScript中的原型和原型链怎么理解”,在日常操作中,相信很多人在JavaScript中的原型和原型链怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • 带你理解JavaScript 原型原型链
    目录一、原型、原型链相等关系理解二:原型、原型链的意思何在 看完这篇文章,你会发现,原型、原型链原来如此简单!  上面经典的原型链相等图,根据下文的学习,你会轻易掌握。 一...
    99+
    2022-11-12
  • javascript的构造函数, 原型,原型链和new是什么
    这篇“javascript的构造函数, 原型,原型链和new是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“j...
    99+
    2023-06-29
  • 什么是JS原型和原型链
    本篇内容介绍了“什么是JS原型和原型链”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.JS 的发展史要想...
    99+
    2022-10-19
  • 彻底理解JavaScript的原型与原型链
    目录前言基础铺垫prototypecontructor属性__proto__原型链提高总结后语前言 原型与原型链知识历来都是面试中考察的重点,说难不算太难,但要完全理解还是得下一定...
    99+
    2022-11-12
  • JavaScript的继承和原型链是什么
    小编给大家分享一下JavaScript的继承和原型链是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言JavaScri...
    99+
    2022-10-19
  • JavaScript原型链怎么理解
    本篇内容介绍了“JavaScript原型链怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.原型的关系在JavaScript中的每个...
    99+
    2023-06-21
  • 如何理解JavaScript中的原型与原型链
    本篇文章给大家分享的是有关如何理解JavaScript中的原型与原型链,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。原型和原型链关系贯穿Jav...
    99+
    2022-10-19
  • Javascript原型和原型链的知识点整理
    这篇文章主要讲解了“Javascript原型和原型链的知识点整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Javascript原型和原型链的知识点整理”...
    99+
    2022-10-19
  • 详解JavaScript的原型与原型链
    目录详解原型与原型链构造函数原型对象 访问原型设置原型检测原型prototype、__proto__、constructor之间的关系原型链原型链的作用普通对象与函数对象经...
    99+
    2022-11-13
  • JavaScript的原型及原型链的用法
    这篇文章给大家介绍JavaScript的原型及原型链的用法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript 是世界上最流行的脚本语言。 JavaScript 是属于 web 的语言,它适用于 PC、笔...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作