[英]Extend prototype function JavaScript
我有一个继承自另一个对象的对象,如下所示:
var a = function ()
{
}
a.prototype.foo = function ()
{
bar();
}
var b = function ()
{
a.call(this)
}
b.prototype = Object.create(a.prototype);
b.prototype.constructor = b;
我想要一个名为“foo”的b方法,并扩展一个具有相同名称的函数。
b.prototype.foo = function ()
{
baz();
// When .foo() is called, runs both bar() and baz()
}
有没有一种简单的方法可以在没有库的帮助下在本机JavaScript中实现这一点?
如果我理解正确你可以扩展方法
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();
最简单的选择:
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()
的行为中,而不需要更广泛的重构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.