快速理解js原型链
javascript是一种动态类型其使用原型链的方式实现继承关系。对象[[Prototype]](__proto__) 属性[[Prototype]]属性在很多Js之中实现为__proto__属性 这个属性的作用是:构成一个链条查找值时沿着链条向上找找到了则返回对应的值如果找到[[Prototype]]值为None则返回undifined我们看下面的一个例子constdemo1{a:1,b:2,__proto__:{c:3,__proto__:{d:4}}}运行结果是这里查找demo某一个属性的链条是demo1-demo1.[[Prototype]]-demo1.[[Prototype]].[[Prototype]]-Object.[[Prototype]]-None找到即停这就是属性遮蔽的原因。函数Prototype属性js之中函数是一等公民,当函数作为构造函数时构造的对象会继承该函数的Prototype内的属性和方法下面是一个例子constdemo1{a:1,b:2,__proto__:{c:3,__proto__:{d:4}}}functiondemo2(value:number):void{this.valuevalue;}demo2.prototypedemo1;letDemo2newdemo2(100);console.log(Demo2.value);console.log(Demo2.c);debug的结果是Demo2通过demo2.prototype demo1;这个方式继承了demo1的属性类的实质既然我们每一次都写函数.prototype...形成继承关系太麻烦了这个时候类这个语法糖就出现了classLayerD{d:number4;}classLayerCextendsLayerD{c:number3;}classDemo1LikeextendsLayerC{a:number1;b:number2;}classdemo3extendsDemo1Like{value:number;constructor(value:number){super();this.valuevalue;}}letDemo3newdemo3(100);console.log(Demo3.value);// 100自身console.log(Demo3.a);// 1console.log(Demo3.c);// 3console.log(Demo3.d);// 4注意这里仍然实现了原型链demo3.prototype → Demo1Like.prototype → LayerC.prototype → LayerD.prototype → Object.prototype实现效果和我们的第二节的例子代码一样但是需要额外注意的是内存结构中存在一些不同注意看 此处Demo3之中的a,b,c,d属性都是在Demo3实例对象上如果说存在很多个实例化对象那么内存压力会有一些大而采用第二节的对象[[Prototype]](__proto__) 写法则会内存压力小很多。当然你也可以使用另一种更符合第二节的代码的原型继承方式即classdemo3{value:number;constructor(value:number){this.valuevalue;}}demo3.prototype{a:1,b:2,__proto__:{c:3,__proto__:{d:4,},},};总结其实区分对象的[[Prototype]](__proto__) 属性以及函数的prototype属性就能理解这个是两套平行的班子。对象的[[Prototype]](__proto__) 属性目的是为了自身提供继承值而函数的prototype属性则是为了产生实例对象提供继承值类则是简化了这种继承关系的表达。参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain

相关新闻

嵌入式系统看门狗定时器原理与TI OMAP实战配置详解

嵌入式系统看门狗定时器原理与TI OMAP实战配置详解

1. 看门狗定时器:嵌入式系统的“安全卫士”在嵌入式系统开发里,最让人头疼的往往不是功能实现,而是系统在无人值守、长期运行后,因为某个未知的软件缺陷、电磁干扰或者内存溢出,突然“卡死”或者跑飞。想象一下&#x…

2026/7/19 5:35:17 阅读更多 →
Lightning AI GPU Marketplace:跨云AI算力的统一抽象层

Lightning AI GPU Marketplace:跨云AI算力的统一抽象层

1. 项目概述:这不是又一个云市场,而是一张AI算力的“通用机票” Lightning AI GPU Marketplace——光听名字,很多人第一反应是“又一个卖GPU实例的平台”,点开官网可能看到一堆v100、a100、h100的规格表和小时计价,心…

2026/7/19 5:35:17 阅读更多 →
一文读懂 HarmonyOS 6.1 带来的十大重要升级

一文读懂 HarmonyOS 6.1 带来的十大重要升级

一、ArkUI(方舟UI框架) TextController新增支持文本选择能力。 新特性解释 TextController是Text组件专用的文本控制器, HarmonyOS 6.1 给TextController增加了新方法setTextSelection,该方法可设置文本选择区域并高亮显示。 以下…

2026/7/19 5:34:17 阅读更多 →

最新新闻

CC32xx ADC寄存器级配置:FIFO、中断与DMA高效数据采集实战

CC32xx ADC寄存器级配置:FIFO、中断与DMA高效数据采集实战

1. 项目概述与核心价值 在嵌入式开发,尤其是物联网和实时传感应用中,模数转换器(ADC)扮演着将物理世界与数字世界连接起来的桥梁角色。它负责将传感器输出的连续模拟电压信号,转换为微控制器能够理解和处理的离散数字值…

2026/7/19 8:33:26 阅读更多 →
企业级分布式爬虫系统:从架构设计到代码落地

企业级分布式爬虫系统:从架构设计到代码落地

在数据驱动的时代,大规模爬虫早已不是单机脚本就能胜任的工作。面对目标网站日益严苛的反爬机制,一套稳定、高效、可扩展的分布式爬虫系统,是企业数据团队的必备基础设施。本文将结合实战经验,从架构设计到完整代码实现&#xff0…

2026/7/19 8:33:26 阅读更多 →
Transformer架构核心原理与工程实践详解

Transformer架构核心原理与工程实践详解

1. Transformer架构全景解析 Transformer架构的核心创新在于完全摒弃了传统的循环神经网络结构,转而采用自注意力机制(Self-Attention)来处理序列数据。这种设计使得模型能够并行处理所有输入位置的信息,彻底解决了RNN系列模型难以…

2026/7/19 8:33:26 阅读更多 →
CC32xx PRCM寄存器与电源管理框架:嵌入式低功耗设计实战指南

CC32xx PRCM寄存器与电源管理框架:嵌入式低功耗设计实战指南

1. 项目概述与PRCM核心价值 在嵌入式开发,尤其是物联网设备开发中,功耗控制是决定产品成败的关键因素之一。一个典型的无线传感器节点,其大部分生命周期可能都处于休眠状态,只在需要采集数据或上报信息时才短暂唤醒。如果电源管理…

2026/7/19 8:33:26 阅读更多 →
Yii框架前后台分离登录系统设计与实现

Yii框架前后台分离登录系统设计与实现

1. Yii框架前后台登录系统架构设计在Yii框架中构建前后台分离的登录系统,核心在于理解Yii的身份验证流程和会话管理机制。传统单用户系统难以满足前后台权限隔离的需求,我们需要设计两套独立的用户体系。1.1 基础身份验证流程解析Yii的身份验证基于CWebU…

2026/7/19 8:33:26 阅读更多 →
UE5+Cesium加载本地倾斜摄影模型:从OSGB到动态3D场景全流程实战

UE5+Cesium加载本地倾斜摄影模型:从OSGB到动态3D场景全流程实战

1. 项目概述:从本地数据到动态场景的跨越在三维可视化领域,将海量的本地倾斜摄影数据流畅、逼真地集成到实时渲染引擎中,一直是个既充满诱惑又颇具挑战的课题。倾斜摄影模型以其高精度、高真实感的优势,在智慧城市、数字孪生、工程…

2026/7/19 8:32:26 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻