繁体   English   中英

扩展原型函数JavaScript

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM