Вызов функции в 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, время: 01:29. |