在javascript函数中传递对象

时间:2011-06-07 06:32:52

标签: javascript object

说我已经有很多对象,比如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。

3 个答案:

答案 0 :(得分:2)

使用square bracket notation

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