JavaScript中的prototype和_proto_的关系是什么

JavaScript中的prototype和_proto_的关系是什么

  • __proto__ 是 JavaScript 中对象的一个内部属性,它指向该对象的原型。JavaScript 中每个对象都有一个 __proto__ 属性,通过它可以访问对象的原型。
  • prototype 是函数对象特有的属性,每个函数都有一个 prototype 属性,它指向一个对象,这个对象就是该函数的原型(这个原型对象包含了实例共享的方法和属性)。

​ 当使用 new 关键字创建一个实例时,这个实例的 __proto__ 就指向了构造函数的 prototype,这样一来,实例就可以访问构造函数原型对象上定义的方法和属性。

​ 简而言之,__proto__ 是对象上的属性,而prototype是函数对象上的属性。它们的关系在于:

​ 1、对象实例的 proto 属性指向其构造函数的 prototype。

​ 2、对象可以通过 proto 属性访问到原型链上的其他对象,包括 Object.prototype。

​ 3、函数对象的 prototype 属性用于定义构造函数的原型对象,这个原型对象包含了实例共享的方法和属性

1.一个重要的内置关系:VueComponent.prototype.__proto__ === Vue.prototype(这个vue原型对象包含了实例共享的方法和属性。)

2.为什么要有这个关系:让组件实例对象(vc)可以访问到 Vue实例的原型上的属性、方法。

javascript 复制代码
	    //定义一个构造函数
		/* function Demo(){
			this.a = 1
			this.b = 2
		}
		//创建一个Demo的实例对象
		const d = new Demo()

		console.log(Demo.prototype) //显示原型属性

		console.log(d.__proto__) //隐式原型属性

		console.log(Demo.prototype === d.__proto__)  //这里返回的就是true

		//程序员通过显示原型属性操作原型对象,追加一个x属性,值为99
		Demo.prototype.x = 99
相关推荐
Lucky_ldy2 小时前
C语言学习:数据在内存中的存储
c语言·开发语言·学习
钱多多_qdd2 小时前
基于mac环境,升级python环境问题解决
开发语言·python·macos
boonya3 小时前
Python 量化金融框架及技术落地方案
开发语言·python·金融
fanzhonghong3 小时前
javaWeb开发之前端实战(Vue工程化+ElementPlus)
前端·javascript·vue.js·后端·spring
Ulyanov3 小时前
《从质点到位姿:基于Python与PyVista的导弹制导控制全栈仿真》: 基石——3-DOF质点弹道的高保真建模与数值稳定性分析
开发语言·python·算法·ui·系统仿真
openKaka_3 小时前
completeWork:真实 DOM 是在哪里被创建的
前端·javascript·react.js
学习中.........3 小时前
Java 并发容器深度解析:从早期遗留类到现代高并发架构
java·开发语言·架构
bbq粉刷匠3 小时前
了解HTML、CSS与JavaScript
javascript·css·html
加号33 小时前
【C#】 实现程序最小化后重新拉起并强制置顶显示的技术指南
开发语言·c#
wangl_923 小时前
C# / .NET 在工业环境中的优势
开发语言·c#·.net·.netcore·.net core·visual studio