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

Vue 中理解__proto__和prototype

Vue 中__proto__prototype的关联与应用全解析

Vue 实例(vm/根实例、vc/组件实例)的能力继承体系完全基于 JavaScript 原型链机制,而__proto__prototype是原型链的核心载体。本文先夯实原生 JS 中二者的本质区别,再分 Vue 2/Vue 3 拆解其在 Vue 中的关联逻辑、底层实现,最后结合实际开发场景讲解应用与避坑要点。

一、基础铺垫:JS 原生中__proto__prototype的核心区别

要理解 Vue 中的关联逻辑,需先掌握原生 JavaScript 中二者的本质——prototype是构造函数的“能力仓库”,__proto__是实例的“原型导航指针”。

1. 核心定义与归属

概念归属对象本质/类型核心作用核心特点
prototype仅函数(构造函数)普通对象(原型对象)存放“供所有实例继承的公共属性/方法”,是构造函数的“原型仓库”仅函数拥有;默认包含constructor(指向构造函数本身)
__proto__所有对象(含函数/实例)原型指针(内置属性)连接实例与构造函数的prototype,实现原型链查找(实例自身无属性时向上查找)所有对象拥有;ES6 标准化,不建议手动修改

2. 原生 JS 基础示例(理解核心关联)

// 1. 构造函数(拥有 prototype 仓库)functionPerson(name){this.name=name;// 实例私有属性}// 往 prototype 仓库添加公共方法(所有实例共享)Person.prototype.sayHi=function(){console.log(`Hi,${this.name}`);};// 2. 创建实例(只有 __proto__,无 prototype)constp1=newPerson('张三');constp2=newPerson('李四');// 3. 核心关联:实例.__proto__ === 构造函数.prototypeconsole.log(p1.__proto__===Person.prototype);// trueconsole.log(p2.sayHi===p1.sayHi);// true(共享仓库方法)// 4. 原型链查找:实例 → __proto__ → prototype → 上层 prototype// p1 自身无 toString → 找 p1.__proto__(Person.prototype)→ 无 → 找 p1.__proto__.__proto__(Object.prototype)→ 找到console.log(p1.toString()===Object.prototype.toString.call(p1));// true// 5. 原型链终点:Object.prototype.__proto__ = nullconsole.log(Object.prototype.__proto__);// null

3. 核心结论(原生 JS)

  • 实例通过__proto__指向构造函数的prototype,从而继承公共属性/方法;
  • prototype是“仓库”,__proto__是“导航”,二者共同构成原型链;
  • 所有原型链最终指向Object.prototype.__proto__(值为null)。

二、Vue 中的核心构造函数(关联的前提)

Vue 内部通过两个核心构造函数支撑实例体系(Vue 2 清晰区分,Vue 3 微调),其prototype是 Vue 实例能力的核心载体:

http://www.gsyq.cn/news/118781.html

相关文章:

  • Magpie-LuckyDraw:5分钟上手的多平台炫酷抽奖系统终极指南
  • 从卷 Java 到冲网安!计算机人 2025 自救路线:附 40-150 万安全岗 + 技能衔接清单
  • Android键盘可见性事件监听终极指南:让你的应用完美响应键盘变化
  • 百度网盘高速下载神器:告别限速的终极解决方案
  • Flutter Engine长文本渲染优化:从卡顿到流畅的实战指南
  • EPubBuilder:零基础也能快速上手的电子书制作神器 ✨
  • 终极智能设备管理平台:ThingsGateway完整指南
  • 语聊APP新生态!一站式语聊房语音直播APP源码开发搭建
  • G-Helper华硕优化工具:3分钟快速配置,性能调优秘诀全解析
  • 找最大公约数
  • Mermaid在线编辑器终极指南:从零开始轻松制作专业图表
  • Lucky ACME自动SSL证书申请全攻略:告别手动续期的烦恼
  • transfer.sh极速文件分享工具部署与运维指南
  • 5步构建高可靠消息系统:Watermill死信队列与延迟消息实战指南
  • 技术人才如何实现职业跃迁:从执行者到战略影响者的3个关键维度
  • DiT架构演进:从理论突破到工业级扩展的技术实践
  • 终极指南:如何用pbxproj轻松玩转Xcode项目文件
  • 边缘计算开源项目终极指南:零成本构建智能物联网系统
  • 移动端AI部署革命:Paddle-Lite如何让深度学习模型在手机上流畅运行
  • 重塑复古美学:Analog Diffusion胶片质感图像生成的15个实战技巧
  • 2025终极提示工程实战指南:核心技术解密与效率突破
  • 类型安全强化学习实战:从Gymnasium类型提示到项目稳健性提升
  • JSLint:提升JavaScript代码质量的智能工具
  • Vim文件属性查看终极指南:三大工作流快速解决你的文件管理痛点
  • 分布式通信实战指南:从性能瓶颈到系统优化
  • NPDP产品管理体系深度解析
  • 硬核体素渲染:从理论到实践的WebGL终极指南
  • Notally 极简笔记应用完整使用指南
  • Video Download Helper 高级版:彻底摆脱120分钟下载限制
  • Factorio学习环境中大语言模型规划能力的技术解析与实践应用