创建对象时,我希望使用新函数扩展现有原型(prototype)函数的功能。新函数需要调用原来的原型(prototype)函数来执行,但它们显然在同一个命名空间中。
Obj = function(i,newFn) {
this.i = i;
if( newFn ) this.fn = newFn;
}
Obj.prototype.fn = function(a) { return a+this.i; }
o1 = new Obj1( 3, function(a) { if( a<0 ) return 0; return ORIGINAL.fn(a) } );
如果 ORIGINAL 是 this.fn
则 o1.fn
变为非终止递归
如何从 o1.fn()
中引用 Obj.prototype.fn()
?
按照@PeterOlsen 回答,
o1 = new Obj1( 3, function(a) { return Obj.prototype.fn.call(this,a) } );
最佳答案
how do I reference Obj.prototype.fn() from within o1.fn()?
很简单,用Obj.prototype.fn
引用它。
关于javascript - 在javascript中,新的对象函数如何扩展同名的原型(prototype)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136611/