Название вызвавшего свойства
привет всем )
у меня есть объект: 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, время: 08:48. |