Вызов функции в hash-массиве
Всем привет!
Хотелось бы поинтересоваться, возможно ли каким то простым способом выполнить функцию по заранее заданному пути в строке? Или только самому рекурсию писать? То есть по сути, зная путь, необходимо выполнить функцию. Строка: 'test.test2.test3.test4'; Функция:
var test = {
test2: {
test3: {
test4: function () {alert();}
}
}
};
То есть возможно есть какая то альтернатива eval?
eval('test.test2.test3.test4')();
|
Цитата:
var test = {
test2: {
test3: {
test4: function () {alert('Ok');}
}
}
};
var str='test.test2.test3.test4';
var a=str.split('.');
var fnc=window;
for (i=0; i<a.length; i++) {
fnc=fnc[a[i]];
};
fnc();
Без рекурсии... |
ksa, Огромное спасибо! :)))))
|
ksa, блин, пока я писал - ты уже написал. :)
http://learn.javascript.ru/play/2tw4z
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<script>
Object.prototype.getByString = function(elems) {
var self = this, i;
elems = elems.split('.');
for(i=0; i<elems.length; i++) {
self = self[elems[i]];
if(!self) return;
}
return self;
};
var test = {
test2: {
test3: {
test4: function () {
alert(123);
}
}
}
};
test.getByString('test2.test3.test4')();
</script>
</body>
</html>
|
Ruslan_xDD, твой вариант будет шибче! ;)
|
Ruslan_xDD,
Спасибо большое, ребята :))) |
| Часовой пояс GMT +3, время: 02:36. |