这个地方有问题吧,people.prototype.getName 的修改依然会影响到MAN实例
4 回答
讲师的意思呢,是说 通过 man.prototype = new people; 这种方式进行继承之后,在man.prototype上对getName方法进行修改,不会影响people.prototype上的同名方法
例如:
function People (){
this.name = 'frog';
this.age = 29;
}
People.prototype.getName = function(){
return this.name;
}
function Man(){
this.name = 'rat';
this.age = 3;
}
Man.prototype = People.prototype;
//某一天,新来的小伙伴修改了这个方法
Man.prototype.getName = function(){
return this.age;
}
//验下一下父类是否被子类改写
var p = new People;
var n = p.getName();
console.log(n); // 输出29而不是 frog
//说明直接用原开链,父类会被子类改写
而Man.prototype = new People;
则父类原型链上的同名方法不会被改写
因为这时Man.prototype上保存的只是People的实例,
而实例的修改,显然是不会对它的类构成影响的。
举报
0/150
提交
取消