先上代码,再解释:
function Base(){
this.x=1;
}
Base.prototype.m1 = function(){
this.m2();
};
Base.prototype.m2 = function(){
console.log("Base.m2()");
};
//
function Child(){
this.x=2;
}
Child.prototype = new Base();
Child.prototype.m2 = function(){
console.log("Child.m2()");
};
c=new Child();
c.m1();// "Child.m2()"
Base中定义函数m1和m2,且在函数m1中调用函数m2;Child继承自Base,并override掉m2函数。此时,在Child的实例c上调用函数m1时,执行的是Base的m1,然后在m1中,this是Child的实例,所以this.m2(),执行的是Child的函数m2,所以输出结果为Child.m2().