说我已经有很多对象,比如obj1,obj2,..... obj30 .....
现在我正在尝试编写一个这样的函数:
function blar(N){
do something to objN
}
blar('4');
到目前为止,似乎唯一的方法是
function blar(thisObj){
do something to thisObj
}
blar(obj4);
我想知道传递N的正确方法是什么,以便函数可以使用该N值来处理objN。
希望我能说清楚。
PS:我甚至尝试过类似blar(obj + N)的东西,但显然它也是错的,因为系统试图找到不存在的obj。
答案 0 :(得分:2)
window['obj' + N];
这取决于它们悬挂在窗口对象上而不是很好的范围。
...但是如果你有一堆对象,除了数字之外都是相同的,那么你应该首先将它们存储在一个数组中。那你就是:
myArray[N];
答案 1 :(得分:0)
使用eval:
function blar(N) {
var obj = eval("obj"+N);
}
或者,如果您可以将这些对象放入对象中,则可以使用[]
function blar(N) {
var obj = tracker["obj" + N];
}
答案 2 :(得分:0)
这很简单:
function blar(objectNo) {
var obj = eval('obj' + objectNo);
alert(obj);
}
为了给你提供一些与他人交流的关键词:你想要做的是在当前范围内按名称访问对象。
但请注意以下内容不起作用:
function main() {
var a = 1, b = 2, c = 3;
blar('a'); // doesn't work
doSomething(eval('a')); // works
}
这是因为变量a
仅在main
函数中可见,但在blar
中不可见。也就是说,必须在变量可见的范围内调用eval
。