Название вызвавшего свойства
привет всем )
у меня есть объект: var o = new Object(); к нему может добавиться произвольное количество свойств формата: o.func24 = function(){ /* some code here */ } вопрос: как мне при вызове свойства: o.func24(); получить название исполняемого свойства ("func24")? очерёдность, варианты и количество свойств может меняться постоянно. P.S. смог найти только вывод всего списка свойств (Object.keys(o)). Но это не то… помогите плз. |
Тут вроде рассказано http://www.seifi.org/javascript/java...arguments.html
|
Цитата:
|
max0n,
Либо писать в методы именованные функции. и забирать имя через arguments.callee.name, Либо перебором. Вариант 1: var o = { func1: function func1() { alert(arguments.callee.name); }, func2: function func2() { alert(arguments.callee.name); } } o.func1(); o.func2(); Вариант 2: var o = { func1: function func1() { for (var name in this) { if (this[name] === arguments.callee) { alert(name); } } }, func2: function func1() { for (var name in this) { if (this[name] === arguments.callee) { alert(name); } } } } o.func1(); o.func2(); |
tsigel,
а если у меня 100 свойств... мне к каждому прописывать полностью функцию? могу я както скопировать функцию? чтото типо: o.func2 = o.func1(); |
Скопировать функции можно, но то что вы хотите выглядит очень неправильным. Может быть вы расскажете зачем вам это понадобилось и как добавляются функции в объект и тогда можно придумать более правильное решение?
Например на вскидку сделать объекту метод для вызова функций, который бы вызывал функцию и пихал бы ей имя ключа первым аргументом, тогда и париться не надо. Например: var o = { func1: function func1(name) { alert(name); }, func2: function func1(name) { alert(name); }, call: function (name) { this[name](name); } } o.call("func1"); o.call("func2") |
ну... у меня постепенный запуск анимации на сайте.
загружается страница.... на ней подгружаются блоки с анимацией. Каждый раз разное количество. как только браузер докрутил до блока, запускается функция, названная как ID блока, который виден. Анимация запускается и удаляется свойство, чтобы не запускалось до перезагрузки страницы. |
Цитата:
|
Цитата:
Ну не колется народ и все. Будет мучиться (я в третьем лице), страдать, ничего не решит, плюнет, или нагородит колхоза, но никогда не расскажет что хочет сделать, что получается и как оно должно быть по замыслу. Это типа западло что ли считается у нас? |
Допустим запускается анимация, у каждого кадра свои характеристики: ширина, высота, куда двигать, какой эффект, своя подпись и все такое. Угадал? От вас же не дождешься.
Значит все данные есть, надо только закатать их в массив для js. Ну так и закатывайте. По индексу. То есть у вас будет не объект с кучей методов, а массив с кучей объектов и 1 методом. Который будет хавать проперти и делать из то, что предусмотрено интерфейсом. Ну типа у вас будет аниматабле интерфейс. Есть итерабле, коунтабле, компарабле и прочие абле, а у вас - аниматабле. |
Часовой пояс GMT +3, время: 02:31. |