原型和原型链

原型:
每个函数都会默认有一个prototype属性,它是一个指针,指向此函数的原型对象。而构造函数作为一个函数,同样拥有自己的原型对象,而通过构造函数生成的对象实例中,拥有一个_proto_ 属性,它指向构造函数的原型对象,我们把构造函数的原型对象称为对象实例的原型。

原型链:
既然每个实例对象都有一个原型,而每个构造函数也都能创建实例,那假如我们将构造函数 f1 的原型属性指向构造函数f2的实例对象,那么构造函数f1的实例对象就能访问f2的原型属性,依次类推,我们还可以把构造函数f3的原型属性指向f2的队实例对象,那么f3的实例对象同样可以访问到f1的原型,这样,就构成了一条原型链。

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
	function Person (name,age) {
		this.name = name;
		this.age = age;
		this.eat = function () {
			console.log('吃');
		};
	}
	Person.prototype.sex = '男';
	Person.prototype.sayHi = function () {
		console.log('sayHi!');
	};

	var per = new Person('小明',18);
	per.sayHi();//输出为sayHi!
	/* 
		原型的指向是可以改变的,实例对象的__proto__指向的是该对象所在的构造函数的原型对象
		构造函数的原型对象prototype的指向如果改变了,那么实例对象的原型__proto__的指向也会跟着改变,实例对象和原型对象之间的关系是通过__proto__来联系,这种关系就叫原型链
	*/
</script>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值