我有一个继承自另一个对象的对象,如下所示:
b.prototype.foo = function ()
{
baz();
// When .foo() is called, runs both bar() and baz()
}
我希望有一个名为“foo”的b方法,并使用相同的名称扩展一个函数。
{{1}}
有没有一种简单的方法可以在没有库的帮助下在原生JavaScript中实现这一目标?
答案 0 :(得分:3)
如果我理解正确,你可以扩展方法
function A() {}
A.prototype.foo = function() {
console.log('foo');
};
function B() {}
B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;
B.prototype.foo = function() {
A.prototype.foo.call(this);
console.log('foo2');
}
var b = new B();
b.foo();
答案 1 :(得分:1)
最简单的选择:
b.prototype.foo = function () {
bar();
baz();
}
但如果您对a.prototype.foo
进行了更改,则需要使用相同的逻辑更新b.prototype.foo
。
更好的选择是:
b.prototype.foo = function () {
a.prototype.foo.call(this);
baz();
}
现在b.prototype.foo()
调用a.prototype.foo()
,然后调用自己的内部逻辑。如果您更改a.prototype.foo()
,则这些更改会立即反映在b.prototype.foo()
的行为中,而不需要更广泛的重构。