Передача объекта в функцию JavaScript - PullRequest
2 голосов
/ 07 июня 2011

Скажем, у меня уже есть много объектов, таких как 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 ]

2 голосов
/ 07 июня 2011

Используйте обозначение в квадратных скобках .

window['obj' + N];

Это зависит от того, что они свисают с оконного объекта и не имеют хорошей области видимости.

… но если у вас естькуча объектов, которые идентифицируются как одинаковые, за исключением числа, тогда вам, вероятно, следует сначала хранить их в массиве.Тогда вы просто:

myArray[N];
0 голосов
/ 07 июня 2011

Все довольно просто:

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 должен вызываться в области видимости переменной.

0 голосов
/ 07 июня 2011

Используйте eval:

function blar(N) {
    var obj = eval("obj"+N);
}

Или, если вы можете поместить эти объекты в объект, вы можете использовать []

function blar(N) {
    var obj = tracker["obj" + N];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...