原型方法没有被覆盖

时间:2015-12-16 09:12:22

标签: javascript

为什么foo没有在控制台中登录?我假设孩子会覆盖foo基本方法。为什么不是这样的?

function parent(){ }
parent.prototype.foo = function(){ 
    console.log('foobar');
};

function child(){ }
child.prototype.foo = function(){ 
    console.log('foo');
};

child.prototype = Object.create(parent.prototype);
child.prototype.constructor = child;

console.log(new child().foo()); // foobar

1 个答案:

答案 0 :(得分:1)

当你这样做时

child.prototype = Object.create(parent.prototype)

替换之前添加了foo属性的对象。

只需更改顺序即可稍后设置foo值:

function parent(){ }
parent.prototype.foo = function(){ 
    console.log('foobar');
};

function child(){ }
child.prototype = Object.create(parent.prototype);
child.prototype.foo = function(){ 
    console.log('foo');
};
child.prototype.constructor = child;

console.log(new child().foo()); // foo