javaScript——原型和原型链

原型:每一个对象都有一个属性叫_proto_;这个属性就是这个对象的原型;

prototype和_proto_的区别:
在这里插入图片描述
prototype是函数才有的属性;
_proto_是每个对象都有的属性;

原型链:
js里面万物皆对象,形成一条_proto_连起来的链条,递归访问_proto_最终到头,最终值为null;
js引擎查找对象时,先查找对象本身是否存在该属性,不存在,在原型链中查找,不会查找自身的prototype;
在这里插入图片描述

如下图所示:
在这里插入图片描述

例:

<script type="text/javaScript">
	var o = { name:"我是祖宗"};
	var f1 = function(){
		this.name = "我是亚当";
	};
	f1.prototype = o;
	var foo1 = new f1();

	var f2 = function() {
		this.name = "夏娃";
	}
	var foo2 = new f2();
	foo2._proto_ = foo1;

	var f3 = function() {
		this.name = "我是人类";
	};
	f3.prototype = foo2;

	var foo3 = new f3();
	alert(foo3.name);

结果是:我是人类;
如果没有"我是人类",则输出结果为"夏娃";

每个对象都有一个__proto__,它指向它的prototype原型对象,而prototype原型对象又具有一个自己的prototype原型对象,就这样层层往上直到一个对象的原型prototype为null这个查询的路径就是原型链;

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值