什么是原型链呢?每个构造函数都会有一个原型对象,原型对象里面有constructor属性是一个指向构造函数的指针,每个实例都包含一个指向原型对象的内部指针([[prototype]])。如果让一个函数的原型对象等于另一个类型的实例,此时原型对象将包含一个指向另一个原型的指针[[prototype]],如果还有另外的原型对象等于该类型的实例,则另外的原型对象将包含一个指向该原型对象的内部指针,如果还有其他原型对象等于更前面的实例,层层递进,就形成了以原型对象的[[prototype]]指向另一原型对象的指针为连接线的链接,这就是原型链。
原型链是实现继承的主要方法。
上述描述比较抽象,以下为代码示例:
function Animal(name){
this.name = name
}
Animal.prototype.eat = function(){
console.log(this.name + " can eat.")
}
function Dog(name){
this.name = name
}
Dog.prototype = new Animal("Dog")
Dog.prototype.housekeeping = function(){
console.log(this.name + " can prevent theft.")
}