基本思想:利用原型让一个引用类型继承另一个引用类型的数组和方法。
构造函数、原型对象和实例之间的关系:每个构造函数都有一个原型对象,每个原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
优点: 实例会继承父类所有的属性和方法
缺点: 优点也是原型链继承的缺点,就有一旦其中某一个实例改变了其中一个属性或者是方法,那么其他的实例也会共享到,且不能向父类型传递参数
function Animal(){
this.species = '哈士奇'
}
Animal.prototype.getSpecies = function(){
return this.species
}
function Dog(){
this.species = '阿拉斯加犬'; // 在子类改变了父类的属性
}
Dog.prototype = new Animal(); // 继承了Animal的属性和方法
var dog1 = new Dog();
var dog2 = new Dog();
console.log(dog1.getSpecies()); // 阿拉斯加犬
console.log(dog2.getSpecies()); // 阿拉斯加犬,所有实例都被实例改变了
·
网友评论