【发布时间】:2015-03-24 21:12:04
【问题描述】:
一定是我的问题措辞有误,因为我找不到关于似乎经常出现的问题的现有问题。
我有一个班级Foo。
var Foo = function () {
return {
a: function () {}
};
};
我有另一个类 Bar 用 Foo 的实例实例化:
var Bar = function (foo) {
// Does something with foo.
};
我想扩展 Foo 实例以使 Bar 以不同的方式工作:
var Bar = function (foo) {
foo.a = function () {
return foo.a.apply(this, arguments);
};
// Does something with foo.
};
按照我的方式做,会导致RangeError: Maximum call stack size exceeded。有没有办法在没有临时变量的情况下扩展方法本身?
这是使用额外变量的方法:
var Bar = function (foo) {
var originala;
originala = foo.a;
foo.a = function () {
return originala.apply(this, arguments);
};
// Does something with foo.
};
【问题讨论】:
-
为什么不想使用临时变量?更好的是,你想用这个来完成什么?这似乎有点可疑。
标签: javascript node.js