当前位置: 首页 > news >正文

JavaScript 原型,原型链的特点

JavaScript 的原型(Prototype)和原型链(Prototype chain)是 JavaScript 面向对象编程中的重要概念。

原型(Prototype)

在 JavaScript 中,每个对象都有一个原型对象,而这个原型对象定义了这个对象的属性和方法。这个原型对象本身也可能会有自己的原型,这样就形成了一个链式结构,也就是所谓的“原型链”。

当在对象上查找一个属性时,如果这个对象自身没有这个属性,JavaScript 就会在该对象的原型(也就是它的 [[Prototype]] 属性)上查找,如果还没有,就会继续查找原型的原型,以此类推,直到找到对应的属性或者达到原型链的顶端(即 null)。

代码示例

以下面的代码为例:

function Person(name) {
this.name = name;
}Person.prototype.sayHello = function() {
return `Hello, I'm ${this.name}`;
};let person1 = new Person('Alice');
let person2 = new Person('Bob');console.log(person1.sayHello()); // 输出 "Hello, I'm Alice"
console.log(person2.sayHello()); // 输出 "Hello, I'm Bob"

在这个例子中,sayHello 方法被定义在 Person 函数的 prototype 上,这样所有通过 new Person() 创建的对象都可以访问这个方法。当我们试图访问 person1 或 person2 的 sayHello 方法时,JavaScript 首先会在这些对象自身上查找这个方法,如果没有找到,就会沿着原型链向上查找,直到找到 sayHello 方法或者到达原型链的顶端。

特点说明

JavaScript 的原型系统有以下特点:

  1. 动态性:可以在运行时动态地添加或删除对象的属性和方法。
  2. 共享性:所有的实例都可以共享它们的原型上的属性和方法,修改一个实例的属性会影响到其所有的实例。
  3. 链式查找:当访问一个对象的属性或方法时,如果这个对象自身没有这个属性或方法,JavaScript 会沿着原型链向上查找。

相关文章:

JavaScript 原型,原型链的特点

JavaScript 的原型(Prototype)和原型链(Prototype chain)是 JavaScript 面向对象编程中的重要概念。 原型(Prototype) 在 JavaScript 中,每个对象都有一个原型对象,而这个原型对象…...

越南服务器租用:企业在越南办工厂的趋势与当地(ERP/OA等)系统部署的重要性

近年来,越南逐渐成为全球企业布局的热门目的地之一。许多企业纷纷选择在越南设立工厂,以利用其低廉的劳动力成本和优越的地理位置。随着企业在越南的扩张,对于当地部署ERP系统或OA系统等的需求也日益增长。在这种情况下,租用越南服…...

Qt QString与QChar总结

(一) QString 1 QString的简介 QString 是Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码,一个字符包含 2字节数据。 对于超过 6553…...

Leetcode算法系列| 1. 两数之和(四种解法)

目录 1.题目2.题解解法一:暴力枚举解法二:哈希表解法解法三:双指针(有序状态)解法四:二分查找(有序状态) 1.题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数…...

汇编-pop出栈指令

32位汇编 执行动作分为两步: 第一步:读出数据 第二步:改变栈地址 如果操作数是16位, 则ESP加2; 如果操作数是32位, 则ESP加4 espesp2 或 espesp4 格式:...

【代码】基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型(完美复现)matlab代码

程序名称:基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型 实现平台:matlab 代码简介:提出了变分模态分解(VMD)和麻雀搜索算法(SSA)与长短期记忆神经网络 (LSTM)相耦合,…...

【UnLua】在 Lua 中定义 UE 反射类型

【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型(开个临时的 Lua VM 即可)直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …...

react的开发中关于图片的知识

React是一个流行的JavaScript库,用于构建用户界面。在React开发中,图片是一个非常重要的元素,可以用于美化界面和展示内容。本篇博客将详细讲解React中关于图片的知识。 1. React中使用图片 在React中使用图片非常简单,只需要使…...

AcWing 188:武士风度的牛 ← BFS

【题目来源】https://www.acwing.com/problem/content/190/ 【题目描述】 农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛。 这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法&…...

马养殖场建设VR模拟实训教学平台具有灵活性和复用性

为保障养殖场生物安全,避免疫病传播,学生出入养殖场受时间和地域的限制, 生产实习多以参观为主,通过畜牧企业技术人员的讲解,学生被动了解生产过程。为了解决畜牧养殖实训难的问题,借助VR技术开展畜牧养殖虚…...

云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)

云技术如何一步步演进的? 云原生解决了什么问题? 物理设备 电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。 这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机…...

基于OGG实现Oracle实时同步MySQL

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

〖大前端 - 基础入门三大核心之JS篇㊷〗- DOM事件对象及它的属性

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…...

如何搭建zerotier服务器组网实现内网穿透

小白花了四天的下班时间终于把zerotier网络调通,此刻坐在桌前舒畅地喝口茶~~ 下面来详细记录下这几天踩的坑: 起因就在于一直在iPad上用向日葵连接公司电脑的我觉得向日葵的界面用的实在难受,vs code操作十分不灵光&…...

【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25

目录 什么是浅拷贝?浅拷贝的问题使用深拷贝解决浅拷贝问题结束语 什么是浅拷贝? 如果在一个类中没有人为定义拷贝函数,则系统会提供默认拷贝函数。那么在此默认拷贝函数中主要进行了简单的赋值操作,那这个简单的赋值操作我们一般…...

加速软件开发:自动化测试在持续集成中的重要作用!

持续集成的自动化测试 如今互联网软件的开发、测试和发布,已经形成了一套非常标准的流程,最重要的组成部分就是持续集成(Continuous integration,简称CI,目前主要的持续集成系统是Jenkins)。 那么什么是持…...

工具及方法 - 查找排名:国内网络作家排名

中国十大网络小说作家排名,在买购网的排名: 中国十大网络小说作家 网络小说作家排行榜 中国著名网络写手排名→MAIGOO生活榜 (这个网站里还有很多其他的排名。) 1,唐家三少 2,辰东 3,我吃西红…...

MySQL INSERT插入条件判断:如果不存在则插入

MySQL INSERT插入条件判断:如果不存在则插入(转) 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条INSERT语句实现呢? ####普通的 INSERT INTO 插入&…...

CSM32RV003:国产高精度16位ADC低功耗RISC-V内核MCU

目录 高精度ADC工业应用工业数据采集应用CSM32RV003简介主要特性 高精度ADC工业应用 高精度ADC即高精度模数转换器,是一种能够将输入模拟信号转换为数字信号的芯片,在多种消费电子、工业、医疗和科研领域都有广泛应用。高精度ADC的主要特点是能够提供高…...

65道常问前端面试题总结react

面试题总结 一.Axios的实现原理 Axios 是一个基于 Promise 的 HTTP 客户端库,用于浏览器和 Node.js 环境。它可以发送 HTTP 请求并处理响应数据。下面是 Axios 实现的基本原理: 封装请求:Axios 提供了一个简单易用的 API,使得开…...

深度解析开源音效引擎:Equalizer APO 5大实战技巧与专业配置方案

深度解析开源音效引擎:Equalizer APO 5大实战技巧与专业配置方案 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 作为一款开源的系统级音频处理引擎,Equalizer APO 通过创新的模…...

基于51单片机的太阳能追光系统设计,太阳跟踪系统设计,光敏控制系统protues仿真设计。 有...

基于51单片机的太阳能追光系统设计,太阳跟踪系统设计,光敏控制系统protues仿真设计。 有仿真,程序,AD图,原文,相关资料。 本系统可以通过光敏电阻调节电机转速,有手动模式和我自动模式。 适用于…...

杰理之spi推灯有概率出现不亮灯【篇】

强驱...

SpringBoot 全局异常处理 + 参数校验,企业级规范写法(代码直接复制)

一、前言 在 SpringBoot 前后端分离项目里,这两个东西几乎是必写基础: 1.接口参数乱传,直接报错到前端 2.异常满天飞,前端各种无法解析 3.每个接口都写 try-catch,代码又臭又长 4.参数校验逻辑重复,维护成…...

AI时代效率革命:揭秘商业大模型如何重塑中小企业运营与管理新范式

在数字化转型浪潮席卷全球的今天,人工智能已不再是遥不可及的未来科技,而是决定企业生存与竞争力的核心引擎。尤其对于资源有限、人力成本敏感的中小企业而言,如何借助AI实现降本增效、突破经营瓶颈,成为关乎未来发展的重要课题。…...

【SITS2026官方认证技术白皮书】:跨模态检索的5大范式跃迁与工业级落地避坑指南

第一章:SITS2026跨模态检索技术演进全景图 2026奇点智能技术大会(https://ml-summit.org) 跨模态检索正经历从对齐驱动到语义共生的关键范式跃迁。SITS2026首次将具身感知信号(如触觉时序、空间音频流)纳入统一表征空间,突破传统…...

智能制造车间:人员+AGV无感协同定位与三维空间安全包络管控技术白皮书

镜像视界(浙江)科技有限公司 自研发布 核心主张:无标签、纯视觉、三维全域、人车同解、动态安全包络,重构智能制造人机共融安全范式一、白皮书概述1.1 背景与行业痛点智能制造车间(汽车总装、电子制造、新能源、精密加…...

E7Helper:第七史诗自动化助手,如何实现24小时无忧挂机?

E7Helper:第七史诗自动化助手,如何实现24小时无忧挂机? 【免费下载链接】e7Helper 【EPIC】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持&#…...

收藏!小白也能看懂:给AI装上“外接大脑“(RAG技术入门指南)

本文用大白话和比喻解释了RAG(检索增强生成)技术,即如何让AI接入企业内部知识库,解决ChatGPT等模型缺乏业务数据的问题。核心流程包括文档向量化存储、相似内容检索和生成回答,对比微调成本更低、更新更实时。适合企业…...

媒力无限:坚守初心,做有温度的品牌同行者

在流量喧嚣的时代,总有一群人坚守媒体初心,用专业与温度,做有价值的传播、有意义的事。北京媒力无限品牌文化传播有限公司,由一群深耕中央级媒体十余年的资深媒体人创立,始终以「发现潜力企业,让更多好企业…...