[回顾]从原型链视角解读Vue底层实现Vue VueCompoent VM VC关系
从原型链视角解读VueComponent与Vue关系

原型链
根据,原型链涉及三个关键属性:
__proto__是所有对象的私有属性,指向原型链的第一个元素;prototype是函数的属性,实例对象不拥有它;constructor指向构造函数。提到原型链是JS中实现继承的机制,通过属性链式查找属性,直到顶端null。进一步解释了原型链的终点是null,而Object.prototype的__proto__指向null。然后,需要讨论原型链的应用,比如
继承和共享方法属性。和都提到原型链可以实现属性和方法的共享,节省内存。的面试题分析了几种继承方法的优缺点,需要注意引用类型属性的问题。还要注意原型链的验证方法,
如instanceof和Object.getPrototypeOf的使用,这在和中都有提到。此外,原型链的终点是null,这点在中专门讨论过。最后,总结原型链的重要性,以及理解它对掌握
JS继承机制的关键作用。需要结合多个证据中的示例,比如中的People构造函数实例,中的Dog和Animal例子,来具体说明原型链的工作流程。
以下是一篇关于前端原型链的解读文章,结合了多篇权威资料的分析与实例:
前端原型链深度解析:从底层机制到应用实践
一、原型链的核心概念
原型链是JavaScript实现继承的核心机制,其本质是通过对象的``(浏览器中可通过__proto__访问)形成的链式结构。关键概念包括:
__proto__:所有对象的内置属性,指向其构造函数的原型对象(即prototype)。prototype:函数特有的属性,指向该函数的原型对象。例如Person.prototype包含所有实例共享的方法。constructor:原型对象的属性,指向构造函数本身。例如Person.prototype.constructor === Person。
二、原型链的组成与运行机制
- 链式结构形成
当创建实例时(如const person = new Person()):person.__proto__指向Person.prototypePerson.prototype.__proto__指向Object.prototypeObject.prototype.__proto__最终指向null,此为原型链终点
person → Person.prototype → Object.prototype → null
- 属性查找规则
访问对象属性时(如person.toString()),JS引擎沿原型链逐级查找:- 先在实例自身查找
- 未找到则向上一级原型对象查找
- 直到找到属性或到达
null(返回undefined)
三、原型链的典型应用场景
- 实现继承
function Animal(name) { this.name = name; }Animal.prototype.eat = function() { console.log("Eating..."); };function Dog(name) { Animal.call(this, name); // 继承实例属性}Dog.prototype = Object.create(Animal.prototype); // 继承原型方法Dog.prototype.bark = function() { console.log("Woof!"); };const dog = new Dog("Buddy");dog.eat(); // 继承自Animal
- 方法共享优化
所有实例共享原型方法,相比在构造函数内定义方法可节省内存:
function Person(name) { this.name = name; }// 推荐将方法定义在原型上Person.prototype.sayName = function() { return this.name; };
四、关键验证方法与陷阱
- 原型链检测工具
instanceof:检查构造函数的prototype是否出现在对象原型链中Object.getPrototypeOf():ES5标准方法获取对象原型(优于直接访问__proto__)
console.log(dog instanceof Animal); // true
- 常见陷阱
- 引用类型共享问题
若父类原型包含引用类型属性(如数组),所有子类实例会共享该属性:
- 引用类型共享问题
function Parent() {}Parent.prototype.nums = [1, 2];const child1 = new Parent();child1.nums.push(3); // child2.nums也会变为[1,2,3]
- 构造函数丢失问题
直接覆盖子类原型时需修正constructor指向:
Dog.prototype = Object.create(Animal.prototype);Dog.prototype.constructor = Dog; // 修正constructor
五、原型链与ES6 Class的关系
ES6的class本质是语法糖,底层仍基于原型链:
class Animal {constructor(name) { this.name = name; }</相关文章:
[回顾]从原型链视角解读Vue底层实现Vue VueCompoent VM VC关系
从原型链视角解读VueComponent与Vue关系 原型链 根据,原型链涉及三个关键属性:__proto__是所有对象的私有属性,指向原型链的第一个元素;prototype是函数的属性,实例对象不拥有它;constructor指向构造函数。提到原型链是JS中实现继承的机制,通过属性链式查找属性,直到…...
springcloud nacos 整合seata解决分布式事务
文章目录 nacos安装Mysql5.7安装及表初始化seata server安装下载并解压seata安装包在conf文件夹修改file.conf文件向本地数据库导入seata需要的表修改registry.conf文件将seata配置信息添加到nacos配置中心启动seata server springcloud整合seata测试流程正常下单流程扣减库存失…...
【算法系列】快速排序详解
文章目录 快速排序的多种实现方式1. 基本快速排序(Lomuto 分区方案)1.1 基本原理1.2 步骤1.3 Java 实现示例 2. Hoare 分区方案2.1 基本原理2.2 步骤2.3 Java 实现示例 3. 三数取中法3.1 基本原理3.2 步骤3.3 Java 实现示例 4. 尾递归优化4.1 基本原理4.…...
神经网络发展简史:从感知机到通用智能的进化之路
引言 神经网络作为人工智能的核心技术,其发展历程堪称一场人类对生物大脑的致敬与超越。本文将用"模型进化"的视角,梳理神经网络发展的五大关键阶段,结合具象化比喻和经典案例,为读者呈现一幅清晰的AI算法发展图谱。 一…...
C语言番外篇(4)--------->goto语句
在C语言中,有一个很特殊的语法,这就是goto语句。goto用于实现同一函数的跳转,goto后面会有一个标志,执行goto语句时,就会跳转到标志的位置。 一、goto语句的语法 (1)goto在前,标志…...
AI 编码 2.0 分析、思考与探索实践:从 Cursor Composer 到 AutoDev Sketch
在周末的公司【AI4SE 效能革命与实践:软件研发的未来已来】直播里,我分享了《AI编码工具 2.0 从 Cursor 到 AutoDev Composer》主题演讲,分享了 AI 编码工具 2.0 的核心、我们的思考、以及我们的 AI 编码工具 2.0 探索实践。 在这篇文章中&am…...
Linux与自动化的基础
Linux简介 Linux是一种开源的类Unix操作系统,广泛应用于服务器、桌面和嵌入式设备。常见的Linux发行版包括 Ubuntu、CentOS 和 Debian,它们各有特色,但都以稳定性和安全性著称。 与图形界面相比,Linux的**命令行界面(…...
安全开发-环境选择
文章目录 个人心得虚拟机选择ubuntu 22.04python环境选择conda下载使用: 个人心得 在做开发时配置一个专门的环境可以使我们在开发中的效率显著提升,可以避免掉很多环境冲突的报错。尤其是python各种版本冲突,还有做渗透工具不要选择windows…...
【算法设计与分析】(一)介绍算法与复杂度分析
【算法设计与分析】(一)介绍算法与复杂度分析 前言一、什么是算法?二、算法的抽象机制三、描述算法四、复杂度分析4.1 时间复杂度4.2 空间复杂度 前言 从搜索引擎的高效检索,到推荐系统的个性化推荐,再到人工智能领域…...
SurfaceFlinger代码笔记
drawLayers是做client合成,合成完以后的buffer会放在RenderSurface里 FrameBufferSurface里的buffer是通过setClientTarget给到HWC的(HWC应该给client合成的buffer留了一个slot) Output.cpp这个文件非常关键,代表着具体一个Display的操作 d…...
2025 PHP授权系统网站源码
2025 PHP授权系统网站源码 安装教程: PHP7.0以上 先上传源码到服务器,然后再配置伪静态, 访问域名根据操作完成安装, 然后配置伪静态规则。 Ngix伪静态规则: location / { if (!-e $request_filename) { rewrite …...
Fisher散度:从信息几何到机器学习的隐藏利器
Fisher散度:从信息几何到机器学习的隐藏利器 在机器学习和统计学中,比较两个概率分布的差异是常见任务,比如评估真实分布与模型预测分布的差距。KL散度(Kullback-Leibler Divergence)可能是大家熟悉的选择,…...
深度学习每周学习总结Y1(Yolov5 调用官方权重进行检测 )
🍨 本文为🔗365天深度学习训练营 中的学习记录博客Y1中的内容 🍖 原作者:K同学啊 | 接辅导、项目定制 ** 注意该训练营出现故意不退押金,恶意揣测偷懒用假的结果冒充真实打卡记录,在提出能够拿到视频录像…...
实体机器人在gazebo中的映射
这一部分目的是将真实的机器人映射到gazebo中,使得gazebo中的其他虚拟机器人能识别到真实世界的wheeltec机器人。 真实机器人的型号的wheeltec旗下的mini_mec。 一、在wheeltec官方百度云文档中找到URDF原始导出功能包.zip 找到对应的包 拷贝到工作空间下 在原有…...
【学习笔记】Kubernetes
一、 概览 Kubernetes 提供了一个抽象层,是用户可以在屋里或虚拟环境中部署容器化应用,提供以容器为中心的基础架构。 Kubernetes的控制平面和工作节点都有什么组建? 分别有什么作用? 1.1 Kubernetes控制平面和工作节点的组件及…...
【网络编程】几个常用命令:ping / netstat / xargs / pidof / watch
ping:检测网络联通 1. ping 的基本功能2. ping 的工作原理3. ping 的常见用法4. ping 的输出解释5. ping 的应用场景6. 注意事项 netstat:查看网络状态 1. netstat 的基本功能2. 常见用法3. 示例4. 输出字段解释5. netstat 的替代工具6. 注意事项 xargs&…...
上海创智学院(测试)算法笔试(ACM赛制)部分例题
1.第一个题,大概题目意思是求n句话中最长的单词和最短的单词 这个题目做的有点磕巴,好几年没有写过c/c了,连string的复制都不会写了,哈哈哈,太笨了 后面一点点捡起来,还是写出来了,本身没啥&…...
【学术投稿-第四届材料工程与应用力学国际学术会议(ICMEAAE 2025】材料工程与应用力学的探讨
重要信息 官网:www.icmeaae.com 时间:2025年3月7-9日 地点:中国西安 简介 第四届材料工程与应用力学(ICMEAAE 2025)将于2025年3月7日至9日在中国西安召开。本次会议将重点讨论材料科学、应用力学等领域的最新研究进…...
2025吐槽季第一弹---腾讯云EO边缘安全加速平台服务
前言: 关于EO边缘安全加速平台服务 参照:产品概述,具体如下: 边缘安全加速平台 EO(Tencent Cloud EdgeOne,下文简称为 EdgeOne)是国内首款基于全新架构的真正一体化的边缘安全加速平台。提供全面的安全防…...
力扣-动态规划-70 爬楼梯
思路 dp数组定义:爬到第i个台阶有多少种爬法递推公式: 当前台阶可能是从前一个或者前两个来的dp数组初始化:遍历顺序:顺序遍历时间复杂度: 代码 class Solution { public:int climbStairs(int n) {if(n 1) ret…...
【限时开源】我们刚交付的金融级AIAgent数据流引擎(支持动态拓扑+语义路由),含3大专利数据流编排协议
第一章:AIAgent架构数据流设计模式的范式演进 2026奇点智能技术大会(https://ml-summit.org) AI Agent 的数据流设计已从早期静态管道模型,逐步演进为具备动态感知、语义路由与闭环反馈能力的协同式范式。这一演进并非线性叠加,而是由底层基…...
2026年企业网盘深度实测:告别参数陷阱,谁才是真正的性价比之王?
在数字化转型全面落地的2026年,企业网盘早已成为组织管理核心数字资产的基石。随着市场产品迭代成熟,用户关注的焦点已从基础功能转向综合性价比——即如何在性能、安全、服务与成本之间找到最优解。 实测数据显示,企业网盘的高性价比首先体…...
VRRP实验练习
要求LSW1配置<Huawei> <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys sw1 [sw1]v [sw1]vlan b [sw1]vlan batch 10 20 Info: This operation may take a few seconds. Please wait for a moment...done. [sw1]interface g 0/0/1 [sw…...
Transformer视觉模型进化论:从DETR到DINO-X的技术路线图(附性能对比表)
Transformer视觉模型进化论:从DETR到DINO-X的技术路线图 计算机视觉领域正在经历一场由Transformer架构引领的革命。从最初的DETR开始,基于Transformer的目标检测模型通过一系列创新不断突破性能边界。本文将深入剖析这一技术演进路径,揭示关…...
PPTist:在浏览器中重新定义演示文稿创作的技术革命
PPTist:在浏览器中重新定义演示文稿创作的技术革命 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing for t…...
鸿蒙应用开发的第一步:集成开发环境DevEco Studio的下载
鸿蒙应用开发需要用的开发工具是DevEco Studio,通过华为开发者联盟官网-开发进入,点击DevEco Studio图标,如下图所示: 点击立即下载,进入下载页面,见下图: 靠前显示的一般是最新版,可…...
GitHub进阶玩法全解析,零基础可快速上手进阶高手,轻松解决各类常见难题下(补充版)
9. GitHub Pages与Webhooks:扩展你的能力边界9.1 GitHub Pages不只是静态网站是的,大家都知道它能托管静态网站。但高级用法包括:自定义域名和HTTPS:完全免费,在仓库设置里绑定自己的域名就行,GitHub会自动…...
如何快速掌握vxe-table插件开发:5个实用技巧与完整指南
如何快速掌握vxe-table插件开发:5个实用技巧与完整指南 【免费下载链接】vxe-table vxe table 支持 vue2, vue3 的表格解决方案 项目地址: https://gitcode.com/gh_mirrors/vx/vxe-table 你是否曾在Vue项目中为表格功能开发而烦恼?尝试过多种表格…...
基于STM32LXXX的数字电位器(MAX5400EKA+T)驱动应用程序设计
一、简介: MAX5400EKA+T 是 Maxim Integrated(现为 Analog Devices)推出的一款 256抽头、单路、线性变化的数字电位器。 MAX5400 是一款超小封装(SOT-23-8)的数字电位器,非常适合对PCB空间有严格要求的便携式设备。它通过标准的 SPI 接口与 STM32Lxxx 系列 MCU 通信…...
VSCode终端执行npm命令失败的排查与修复(Powershell方案)
1. 问题场景还原:为什么VSCode终端跑不动npm? 最近在项目里碰到个怪事:用系统自带的CMD窗口跑npm install一切正常,但切回VSCode内置终端就报"npm不是可识别的命令"。这种割裂感就像手机连WiFi能上网但电脑连同一个WiFi…...
