当前位置: 首页 > 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.jsqmd.com/news/107701/

相关文章:

  • Magpie-LuckyDraw:5分钟上手的多平台炫酷抽奖系统终极指南
  • 救命!别再说零基础学不了网安!电脑小白 4 阶段入门路线直接抄
  • 技术陷阱揭秘:Vitest中then函数引发的模块加载异常
  • 1990-2024年省级绿色金融指数
  • 从卷 Java 到冲网安!计算机人 2025 自救路线:附 40-150 万安全岗 + 技能衔接清单
  • Apertus多语言AI完全手册:如何让1811种语言成为你的商业增长引擎?
  • Android键盘可见性事件监听终极指南:让你的应用完美响应键盘变化
  • 如何彻底解决腾讯游戏卡顿问题:sguard_limit资源限制器完整指南
  • 百度网盘高速下载新方案:三步突破限速瓶颈
  • 深入理解指针(7)
  • 魔兽争霸III现代化修复工具:全面解决兼容性问题的终极指南
  • java_base_(抽象类与接口区别篇)
  • 网安人狂喜!红利期 5-8 年 + 480 万缺口,现在转行直接踩中风口
  • python大数据的基于k-means算法的校园美食推荐系统_j4eg7g7z--论文
  • 百度网盘解析工具技术解析与高速下载实现方案
  • 【直接抄作业】程序员技术变现新思路:漏洞挖掘私活接单经验全分享
  • Wallpaper Engine壁纸下载器:一键获取创意工坊海量资源
  • Pyuthon的CBA篮球球员数据可视化分析系统的设计与实现_q0o7rs84_论文
  • 魔兽争霸III兼容性修复终极方案:让经典游戏重获新生
  • 百度网盘高速下载神器:告别限速的终极解决方案
  • 挖到宝了!从 Java 到网安:计算机人 2025 自救路线,年薪 40-150 万不是梦
  • Flutter Engine长文本渲染优化:从卡顿到流畅的实战指南
  • ISO 26262功能安全标准:汽车电子系统安全开发完整指南
  • 开发转渗透工程师:技能复用 + 薪资暴涨,这是我做的最对的决定
  • EPubBuilder:零基础也能快速上手的电子书制作神器 ✨
  • 2025终极JUCE音频开发实战:从新手到专家的完整成长路径
  • EmotiVoice开源项目依赖项管理最佳实践
  • 终极智能设备管理平台:ThingsGateway完整指南
  • 终极百度贴吧用户体验优化指南:15个实用脚本免费提升你的贴吧体验
  • scrapy-python基于大数据爬虫技术的B站数据分析可视化系统_8dbm860u--论文python springboot 转