Динамическое название функции
Предположим в переменной у меня содержится имя функции, как мне создать её экземпляр?
Сейчас я создаю так: element = new (window[elementName])(); Но позже не могу исследовать полученный элемент и получаю ошибку: TypeError: Function.prototype.toString called on incompatible object Может надо создавать как-то по другому? |
function element() { return (window[elementName])(); } |
Цитата:
почему бы не хранить в переменной ссылку на ф-цию? по-моему, вы подходите к проблеме не с того конца, и ее надо решать не используя имена ф-ций, а по нормальному опишите свою более общую проблему |
Есть абстрактный объект который который представляет собой список, с расширенными методами поиска, перебора итд.
Каждый элемент создается вроде: list.add({name: 'one', description: 'bla-bla'}, 'category'); Второй параметр это и есть название класса. Все передаваемые классы имеют свой одинаковый интерфейс и принимают данные идущие первым аргументом. Получается в таком случае мне можно просто написать list.add({name: 'one', description: 'bla-bla'}, category); так? |
Цитата:
и соовтественно вторым параметром в ф-цию list.add попадет именно ф-ция, и ее вполен можно будет вызвать как-то так: list.add=function(obj,func){//метод вашего абстрактного объекта-списка func(obj); } function category(obj){ alert(obj) } list.add({name: 'one', description: 'bla-bla'}, category); |
да, все получилось, php привычка хранить имя класса в тексте))
|
Часовой пояс GMT +3, время: 14:01. |