设想
我有一个“主要对象” System
,其中包含一个名为System.Test
. 例如,它接受三个参数System.Test(id, a, b)
。
现在我有很多对象 ( User[1]
, User[2]
, User[3]
...) 我也希望该.Test
方法可用。但是,id
它传递的参数对于每个User[X]
对象都是唯一的,应该是固定的,例如,如果我调用User[1].Test(a, b)
它应该自动映射到System.Test(1, a, b)
.
到目前为止我所做的
对象的数量User[X]
是可变的。假设我正在遍历它们中的每一个,并且我将它们的 ID 放在一个名为id
(=1, 2, 3...) 的变量中。我尝试在循环中使用此代码。
User[X].Test = function(a, b) {
return System.Test(X, a, b);
}
但是,这并没有按预期工作。在调用 User[X].Test() 的那一刻,它只是将循环中的最后一个键 XSystem.Test
传递给函数,而不是每个 User[X] 对象唯一的 X。
丑陋的方式 - 问题
如果我可以使用eval ,解决方案似乎相当简单。
eval("User[X].Test = function(a, b) { return System.Test(" + X + ", a, b); }");
现在,这可以作为一个黑客。但这.Test
只是一个例子,我无法想象一旦方法数量增加就使用几十个eval调用。尽管在eval中注入的唯一变量是X
(我可以保证它X
是在内部生成并且完全安全 - 没有恶意代码执行的风险) - eval 的使用让我毛骨悚然。有没有更好的方法来做到这一点,我不知道?谢谢。