Вызов классов объекта с динамическим именем
Всем привет!
Суть такова: Есть пустые объект и массив: 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] в поле зрения. Если есть идеи как это реализовать, буду благодарен за совет. Спасибо! |
Цитата:
o["func22"](); o["func75"](); 0["funcAlibaba"](); |
Цитата:
я ещё новичёк в ООП :) Можно ли как-то засунуть в массив, чтобы он перебрал все методы? |
Ну разумеется.
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](); } |
Или как вариант, если не известны методы/свойства объекта, то перебирать свойства можно и так:
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 } } } |
Часовой пояс GMT +3, время: 05:58. |