Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2014, 17:24
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

Вызов классов объекта с динамическим именем
Всем привет!
Суть такова:
Есть пустые объект и массив:
o = new Object();
canvMove = new Array();

далее на странице могут появиться неизвестное количество данных массива, в формате:
canvMove.push([22]);
canvMove.push([75]);
canvMove.push(['Alibaba']);
...

как мне вызвать классы объекта с идентификатором, являющимся значением из массива?
чтоб не в ручную вбивать:
o.func22();
o.func75();
o.funcAlibaba();
...

А перебрать через массив… (вот так у меня не выходит)
for(var i=0; i<canvMove.length; i++){
	(function(d){ //замыкание
		o.func[canvMove[d]]();
	})(i);
}

Делаю это для постепенного запуска анимации, во время прокрутки сайта, при появлении объекта с ID=canvMove[n] в поле зрения.
Если есть идеи как это реализовать, буду благодарен за совет. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2014, 17:42
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
как мне вызвать классы объекта с идентификатором, являющимся значением из массива?
Чо? Ты, наверное, имел в виду методы?

o["func22"]();
o["func75"]();
0["funcAlibaba"]();
Ответить с цитированием
  #3 (permalink)  
Старый 06.10.2014, 18:33
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

Сообщение от Erolast Посмотреть сообщение
Чо? Ты, наверное, имел в виду методы?

o["func22"]();
o["func75"]();
0["funcAlibaba"]();
наверное да )
я ещё новичёк в ООП

Можно ли как-то засунуть в массив, чтобы он перебрал все методы?
Ответить с цитированием
  #4 (permalink)  
Старый 06.10.2014, 18:40
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Ну разумеется.
var object = {
  one: function() {
    alert(1);
  },
  two: function() {
    alert(2);
  },
  three: function() {
    alert(3);
  }
}

var method_names = ["one", "two", "three"];
for (var i = 0; i < method_names.length; i++) {
  var method_name = method_names[i];
  object[method_name]();
}
Ответить с цитированием
  #5 (permalink)  
Старый 06.10.2014, 18:50
Аватар для XelaNimed
Интересующийся
Отправить личное сообщение для XelaNimed Посмотреть профиль Найти все сообщения от XelaNimed
 
Регистрация: 07.02.2010
Сообщений: 23

Или как вариант, если не известны методы/свойства объекта, то перебирать свойства можно и так:
var obj = {
  "one" : function(){},
  "two" : true,
  "three" : function(){}
}

for(var i in obj){
  if(obj.hasOwnProperty(i)){
    // method
    if(typeof obj[i] == "function"){
      obj[i]();
    } else {
      // property
    }
  }
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов метода внутри объекта feoalter7 Общие вопросы Javascript 4 01.07.2014 16:23
вызов ф-ции обработчика как метода объекта FanAizu Общие вопросы Javascript 5 23.08.2013 15:52
Создать таблицу с динамическим именем KamalovRadik Серверные языки и технологии 4 25.02.2012 18:00
Получить экземпляр объекта с динамическим "именем" ZLO@der Общие вопросы Javascript 3 16.10.2010 13:15
Вызов функции вне html объекта arwprod jQuery 25 05.10.2010 00:14