怎么理解JavaScript原型、原型链

server/2024/11/12 1:56:21/

原型

JavaScript被描述为一种基于原型的语言,也就是每一个对象都拥有一个原型对象。

当我们访问一个对象的属性时,它不仅仅该改对象上查找,还会到这个对象的原型上查找,甚至是到这个对象的原型的原型上查找,这样一层一层向上查找,直到找到匹配的属性或者是到达原型链的顶端。

这些属性和方法是定义在Object的构造函数上的prototype属性上。而并不是实例对象本身。

比如:函数可以有属性,每一个函数都有一个特殊的属性叫做原型prototype,这个原型prototype是一个对象,也就是原型对象。

原型对象上自带一个属性constructor,这个属性指向函数。

原型链

原型对象也可能拥有原型,并且从中集成方法和属性,一层一层、以此类推。这种关系就是原型链,这就是为什么任何一个对象会拥有定义在其他对象中的属性和方法的原因。

在对象实例和它们的构造函数之间建立起一个链接,通过_proto_属性访问原型对象的原型对象,prototype属性访问到实例的构造函数。

总结:

  1. 一切对象都是集成于Object对象,Object对象直接直接继承根源对象null
  2. 一切函数对象,都是继承于Function对象
  3. Object对象直接继承于Function对象
  4. Function对象的__proto__会指向自己的原型对象,最终还是继承于Object对象。

这就是关于原型和原型链的笔记,希望对你有所帮助!


http://www.ppmy.cn/server/23585.html

相关文章

力扣-有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 注…

双向链表专题

文章目录 目录1. 双向链表的结构2. 双向链表的实现3. 顺序表和双向链表的优缺点分析 目录 双向链表的结构双向链表的实现顺序表和双向链表的优缺点分析 1. 双向链表的结构 注意: 这⾥的“带头”跟前面我们说的“头节点”是两个概念,带头链表里的头节点…

Ansible 自动化运维

一、介绍 1、定义: ansible是自动化运维工具,基于Python开发,具有批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于 paramiko(框架) 开发的,并且基于模块化工作,本身没有批量…

Java基础知识总结(79)

waitStatus属性 每个节点与等待线程关联,每个节点维护一个状态waitStatus,waitStatus的各种值以常量的形式进行定义。 CANCELLED(1):waitStatus值为1时表示该线程节点已释放(超时、中断),已取消的节点不会再阻塞&…

OpenShift 4 - 了解 OpenShift 是如何使用节点本地镜像缓存

《OpenShift / RHEL / DevSecOps 汇总目录》 文本已在 OpenShift 4.15 环境中进行验证。 什么是节点本地镜像缓存 一个 OpenShift 集群节点在运行 Pod 前需要先从 Registry 拉取到相关 Image。这些镜像会保存在节点本地存储中并作为缓存,这样该节点如果再使用这个…

偏微分方程算法之二阶双曲型方程紧差分方法

目录 一、研究目标 二、理论推导 三、算例实现 一、研究目标 前面我们已经介绍了二阶双曲型方程显式、隐式差分格式,可否像抛物型方程一样,构建更高精度的差分格式。接下来我们介绍紧差分格式。这里继续以非齐次二阶双曲型偏微分方程的初边值问题为研究对象:

NX二次开发直接加载dlx(不用加载到菜单)

一、概述 在NX二次开发中我们开发一个组合功能时常常会用到UI界面,在查看开发效果时必须将dlx和dll放置到Application目录中通过调用菜单,然后可以预览;当然在VS中切换dll生成路径,这样可以避免来回重复将dll放置到Application目录…

ElasticSearch复合查寻

FunctionScore主要是在原始查询的基础上去修改一下算分的。 而BooleanQuery布尔查询,它不会去修改算分,而是把多个查询语句组合在一起形成新查询。这些被组合的查询语句,我们都称之为叫子查询了,这些子查询,它的组合方…