news 2026/6/10 1:05:19

Vue 中理解__proto__和prototype

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 实例能力的核心载体:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:42:19

ROS2概念之DDS

我们在《ROS2概述和基于RK3588的环境搭建》中对ROS和ROS2做了对比,其中最多的变化就是DDS。我们在前面文章中介绍的话题、服务、动作,他们底层通信的具体实现过程,都是靠DDS来完成的,它相当于是ROS机器人系统中的神经网络。 一、通…

作者头像 李华
网站建设 2026/6/10 2:17:57

如何彻底解决腾讯游戏卡顿:sguard_limit资源限制器完整指南

如何彻底解决腾讯游戏卡顿:sguard_limit资源限制器完整指南 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 还在为腾讯游戏关键时刻的突然卡顿…

作者头像 李华
网站建设 2026/6/10 1:46:00

重塑复古美学:Analog Diffusion胶片质感图像生成的15个实战技巧

重塑复古美学:Analog Diffusion胶片质感图像生成的15个实战技巧 【免费下载链接】Analog-Diffusion 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/Analog-Diffusion 还在为AI生成图片缺乏真实胶片的细腻质感而苦恼吗?试遍了各种滤镜…

作者头像 李华
网站建设 2026/6/10 12:43:07

unioffice终极指南:用Go语言高效处理Office文档的完整方案

unioffice终极指南:用Go语言高效处理Office文档的完整方案 【免费下载链接】unioffice Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents 项目地址: https://gitcode.com/gh_mirrors/un/unioff…

作者头像 李华
网站建设 2026/6/9 18:31:46

NPDP产品管理体系深度解析

NPDP产品管理体系深度解析 【免费下载链接】产品经理认证NPDP知识体系指南分享 《产品经理认证(NPDP)知识体系指南》是一份全面的产品经理知识体系指南,旨在为产品经理和产品开发人员提供一个系统的知识框架,帮助他们更好地了解产…

作者头像 李华
网站建设 2026/6/10 12:22:06

transfer.sh极速文件分享工具部署与运维指南

transfer.sh极速文件分享工具部署与运维指南 【免费下载链接】transfer.sh Easy and fast file sharing from the command-line. 项目地址: https://gitcode.com/gh_mirrors/tr/transfer.sh 项目简介 transfer.sh是一款轻量级命令行文件分享工具,支持通过HT…

作者头像 李华