js原型链和原型

1>原型:

js中一切皆对象,那原型也是一个对象,通过原型可以实现对象的属性继承,js的对象中包含着一个[[Prototype]]内部属性,这个属性所对应的就是对象的原型。[[Prototype]]作为对象的内部属性不能被直接访问,所以为了方便查看一个对象的原型,提供了__proto__这个非标准的访问器,在js的原型对象中还包含一个constructor属性,指向构造函数

constructor.prototype===__proto__

2>原型链:

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针(constructor),而实例对象都包含一个指向原型对象的内部指针(__proto__)。如果让原型对象等于另一个类型的实例对象,此时的原型对象将包含一个指向另一个原型的指针(__proto__),另一个原型对象也包含着一个指向另一个构造函数的指针(constructor)。假如另一个原型又是另一个类型的实例上述关系依然成立,层层递进,就构成了实例与原型的链条,原型链。

本质就是重写原型对象,代之以一个新类型的实例

function animal()
{
	this.type="animal";
}
animal.prototype.getType=function(){
	return this.type;
}
function dog(){
	this.name="dog";
}
dog.prototype=new animal();
dog.prototype.getName=function(){
	return this.name;
}
var xiaohuang=new dog();

原型链关系

xiaohuang.__proto__===dog.prototype
dog.prototype.__prto__===animal.prototype
animal.prototype.__proto===null


猜你喜欢

转载自blog.csdn.net/qq_41047322/article/details/81059306