原型prototype与原型对象__proto__

本文深入探讨JavaScript中的原型和原型链概念。介绍了prototype属性、隐式原型__proto__以及constructor的作用。通过示例展示了如何在原型对象上定义方法,并通过实例访问这些方法。还阐述了原型链的工作原理,当查找对象属性时,会沿着原型链向上搜索,直至找到Object的原型。同时提到了Function和Object构造函数及其原型的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义
prototype:每个函数(function)对象中都有一个特殊的属性,叫做prototype,该属性指的对象为原型对象。
原型对象(prototype)相当于一个公共的区域可以被所有的该类实例访问,我们可以将一些实例共有的属性或方法存储在原型对象中,这样只需要设置一次即可以让所有的对象都访问到该方法或者属性。

_ proto :每个对象都有一个__proto_(隐式原型)属性。
constructor:是构造函数显示原型的一个属性,指向这个原型对象对应的构造函数。

function Tree(name) {
  this.name = name
}

const theTree = new Tree('Redwood')
console.log('theTree.constructor is ' + theTree.constructor)
//打印结果
theTree.constructor is function Tree(name) {
  this.name = name
}

实例的隐式原型指向其构造函数的显示原型

<script type="text/javascript">
	window.onload = function(){
		function Computer(name,brand,price,color){
			this.name = name;
			this.brand = brand;
			this.price = price;
			this.color = color;
		}
		Computer.prototype.play = function(){//每个函数都有一个prototype属性该属性指的对象为原型对象
			console.log('玩游戏');
		}
		var t1 = new Computer('macBook','apple','18000','银色');//t1是构造函数Computer的实例
		console.log(t1);
	}
		</script>

在这里插入图片描述
如图,Computer是一个构造函数,他拥有一个叫prototype的属性,它指向的原型对象为0x200,它的原型对象拥constructor构造器,constructor又指向原型对象对应的构造函数computer,所有的原型对象都是由object对象创建,computer构造函数创建了一个实例化对象0x300,实例对象拥有一个隐式原型,
隐式原型会先在自身寻找0x300,如果找不到就去上一级的原型中寻找0x200,如果再找不到,就去0x200的上一级的原型中寻找,直到找到object的原型,如果依然没有,则返回undefined。这就是原型链。
Function函数创建了所有函数,computer object ,也可以看作他new了自己,他也拥有phototype属性,这个属性指向他的原型对象,他的原型对象0x700也拥有constructor构造器,他又指向原型对象对应的构造器0x600。
object构造函数new了所有的原型对象,是所有构造函数显示原型的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值