HoRain云--JavaScript prototype(原型对象)

发布时间:2026/7/29 11:29:02

HoRain云--JavaScript prototype(原型对象)
HoRain 云小助手个人主页⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。目录⛳️ 推荐对象的 __proto__ 属性构造函数和原型实例实例实例实例原型链修改原型实例Object.create 方法实例prototype 继承添加属性和方法实例实例在 JavaScript 中原型prototype是一个非常重要的概念它为对象提供了继承和共享属性的机制。每个 JavaScript 对象都有一个与之关联的原型对象通过原型对象可以实现属性和方法的共享从而减少内存占用。所有的 JavaScript 对象都会从一个 prototype原型对象中继承属性和方法。原型是一个对象它是其他对象的模板或蓝图。当一个对象试图访问一个属性或方法时如果在该对象自身没有找到JavaScript 会沿着原型链向上查找直到找到对应的属性或方法或者达到原型链的顶端null为止。对象的 __proto__ 属性每个 JavaScript 对象除了 null都自动拥有一个隐藏的属性 __proto__它指向该对象的原型对象。这个 __proto__ 是实现继承的关键let obj {}; console.log(obj.__proto__); // 输出: [object Object], 即 obj 的原型是 Object.prototype构造函数和原型在前面的章节中我们学会了如何使用对象的构造器constructor实例function Person(first, last, age, eyecolor) { this.firstName first; this.lastName last; this.age age; this.eyeColor eyecolor; } var myFather new Person(John, Doe, 50, blue); var myMother new Person(Sally, Rally, 48, green);尝试一下 »我们也知道在一个已存在构造器的对象中是不能添加新的属性实例Person.nationality English;尝试一下 »要添加一个新的属性需要在在构造器函数中添加实例function Person(first, last, age, eyecolor) { this.firstName first; this.lastName last; this.age age; this.eyeColor eyecolor; this.nationality English; }尝试一下 »当你使用构造函数创建一个对象时构造函数的 prototype 属性会成为所有该构造函数创建的实例对象的原型。实例function Person(name) {this.name name;}Person.prototype.sayHello function() {console.log(Hello, my name is this.name);};let alice new Person(Alice);alice.sayHello(); // 输出: Hello, my name is Alice在这个例子中Person.prototype 是 alice 对象的原型因此 alice 可以访问 sayHello 方法。原型链在 JavaScript 中对象通过原型链prototype chain来实现继承。当一个对象尝试访问一个属性或方法时JavaScript 会首先检查该对象自身是否有这个属性或方法。如果没有它会沿着原型链向上查找。let obj {}; console.log(obj.toString()); // 输出: [object Object] // 这个 toString 方法实际上是从 Object.prototype 继承过来的在上面的例子中obj 对象没有定义 toString 方法因此 JavaScript 沿着原型链查找最终在 Object.prototype 中找到该方法。修改原型你可以动态地修改对象的原型这样可以影响到所有基于该原型创建的对象实例function Person(name) {this.name name;}Person.prototype.sayHello function() {console.log(Hello, my name is this.name);};let bob new Person(Bob);bob.sayHello(); // 输出: Hello, my name is Bob// 修改原型Person.prototype.sayGoodbye function() {console.log(Goodbye from this.name);};bob.sayGoodbye(); // 输出: Goodbye from Bob在这个例子中我们在 Person.prototype 上添加了一个新的方法 sayGoodbyebob 对象立即就可以访问到这个新方法。Object.create 方法Object.create 方法允许你创建一个新对象并将其原型设置为指定的对象。实例let personPrototype {sayHello: function() {console.log(Hello, my name is this.name);}};let alice Object.create(personPrototype);alice.name Alice;alice.sayHello(); // 输出: Hello, my name is Alice在这个例子中alice 的原型是 personPrototype因此 alice 对象可以访问 sayHello 方法。prototype 继承所有的 JavaScript 对象都会从一个 prototype原型对象中继承属性和方法Date对象从Date.prototype继承。Array对象从Array.prototype继承。Person对象从Person.prototype继承。所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时它不仅仅在该对象上搜寻还会搜寻该对象的原型以及该对象的原型的原型依次层层向上搜索直到找到一个名字匹配的属性或到达原型链的末尾。Date对象,Array对象, 以及Person对象从Object.prototype继承。添加属性和方法有的时候我们想要在所有已经存在的对象添加新的属性或方法。另外有时候我们想要在对象的构造函数中添加属性或方法。使用 prototype 属性就可以给对象的构造函数添加新的属性实例function Person(first, last, age, eyecolor) { this.firstName first; this.lastName last; this.age age; this.eyeColor eyecolor; } Person.prototype.nationality English;尝试一下 »当然我们也可以使用 prototype 属性就可以给对象的构造函数添加新的方法实例function Person(first, last, age, eyecolor) { this.firstName first; this.lastName last; this.age age; this.eyeColor eyecolor; } Person.prototype.name function() { return this.firstName this.lastName; };❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧

相关新闻

Web渗透靶场:安全学习与实战演练的黄金标准

Web渗透靶场:安全学习与实战演练的黄金标准

2026/7/29 11:19:02

1. 为什么Web渗透靶场是安全学习的黄金标准 十年前我刚入行网络安全时,总在真实环境里瞎折腾,直到被公司防火墙封了IP才明白:渗透测试是门需要反复练习的手艺活。Web渗透靶场就像武术家的木人桩,提供合法合规的演练环境&#xff0…

上虞热度居高不下的 5 家咖啡店融合餐厅

上虞热度居高不下的 5 家咖啡店融合餐厅

2026/7/29 11:19:02

在咖啡与美食交融的世界里,上虞这5家咖啡店融合餐厅正以独特魅力吸引着无数食客。它们凭借着别具一格的菜品、香醇浓郁的咖啡,成为当地热门的打卡地。今天,就让我们一同走进这些宝藏之地,探寻它们的魅力所在。 一、上虞苦甜序 独特…

智能办公室噪音监测系统开发实践

智能办公室噪音监测系统开发实践

2026/7/29 11:19:02

1. 项目背景与需求分析最近在开发一个智能办公室噪音监测系统,核心功能是当环境音量超过设定阈值时自动提示"请降低音量"。这个需求源于现代开放式办公环境中普遍存在的噪音干扰问题——同事间的交谈声、键盘敲击声、电话铃声等常常在不经意间影响工作效率…

宠物综合服务系统开发,商城购物托运订单合并结算架构

宠物综合服务系统开发,商城购物托运订单合并结算架构

2026/7/29 14:39:11

宠物综合服务系统开发,商城购物托运订单合并结算架构宠物综合服务系统涵盖宠物用品商城、活体托运、洗护服务、医疗预约等多元业务,是一站式宠物本地生活服务数字化载体。和单一电商、单一服务类系统不同,宠物场景普遍存在混合下单需求&#…

AI 在 CI/CD 管道中的角色定位:审查、测试、部署决策的自动化边界

AI 在 CI/CD 管道中的角色定位:审查、测试、部署决策的自动化边界

2026/7/29 14:39:11

AI 在 CI/CD 管道中的角色定位:审查、测试、部署决策的自动化边界 CI/CD 管道是前端工程化的核心基础设施。2026 年,AI 开始渗透到管道的各个环节——代码审查、测试生成、部署决策。但渗透的边界在哪里?哪些环节适合 AI 全自动化&#xff0c…

连锁商户外卖折扣分销小程序开发技术解析

连锁商户外卖折扣分销小程序开发技术解析

2026/7/29 14:39:11

连锁商户外卖折扣分销小程序开发技术解析连锁商户外卖折扣分销小程序,是适配多门店、标准化运营、品牌统一管控的本地生活营销工具,和普通个人CPS分销小程序有本质场景区别。其核心需求在于品牌总部统一管控、各门店独立核销、跨店流量隔离、品牌统一分佣…

STL文件缩略图生成工具:Rust与OpenGL技术实现详解

STL文件缩略图生成工具:Rust与OpenGL技术实现详解

2026/7/29 14:39:11

STL文件缩略图生成工具:Rust与OpenGL技术实现详解 【免费下载链接】stl-thumb Thumbnail generator for STL files 项目地址: https://gitcode.com/gh_mirrors/st/stl-thumb 在3D打印和CAD设计领域,STL文件是最常见的三维模型格式。然而&#xff…

合同AI化风控迫在眉睫,93%的中大型企业已启动评估但87%未通过合规审计——你的团队还在用规则引擎硬扛吗?

合同AI化风控迫在眉睫,93%的中大型企业已启动评估但87%未通过合规审计——你的团队还在用规则引擎硬扛吗?

2026/7/29 14:39:11

更多请点击: https://codechina.net 第一章:AI合同风险评估的现状与战略紧迫性 当前,全球企业正加速将AI模型嵌入合同生命周期管理——从智能条款生成、合规性校验到履约异常预警。然而,主流AI系统在合同风险识别中仍普遍存在语…

SSM框架在共享电动车管理系统中的应用与实践

SSM框架在共享电动车管理系统中的应用与实践

2026/7/29 14:29:10

1. 项目背景与核心价值 共享电动车管理系统是当前城市智慧交通领域的热门应用方向。随着绿色出行理念的普及,各城市投放的共享电动车数量呈现指数级增长,这对运营方的车辆管理能力提出了严峻挑战。我去年参与过某头部运营商的系统升级项目,亲…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

AI会议纪要怎么做?会议录音转文字加自动整理,三个月实测流程

AI会议纪要怎么做?会议录音转文字加自动整理,三个月实测流程

2026/7/29 0:08:23

打工人总是跑不掉要写会议纪要。 我在一家互联网公司,一周至少八场会:产品评审、数据复盘、项目同步、客户沟通,每场一小时起步。 以前的标准流程是开会拼命记→会后凭记忆补→整理成文档发群,结果经常记不全、记错、记串。 大概年…

重庆化龙桥老旧小区改造,怎么搞定夜景照明“不扰居”又能省成本?

重庆化龙桥老旧小区改造,怎么搞定夜景照明“不扰居”又能省成本?

2026/7/29 0:08:23

重庆化龙桥靠着嘉陵江,老小区多,最近几年城市更新做的勤,不少住户都反映过小区夜景亮了是好事,可有的灯太晃眼,半夜拉着窗帘都透光,睡不好觉。还有物业算账,这灯开一整晚,公摊电费蹭…

目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案

目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案

2026/7/29 0:08:23

更多请点击: https://codechina.net 第一章:目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案 目标模糊:学得越勤,离真实能力越远 当学习目标停留在“学会AI”或“搞懂大模型”这类宽泛表述…