Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2010, 16:45
Аспирант
Отправить личное сообщение для Kein Посмотреть профиль Найти все сообщения от Kein
 
Регистрация: 11.01.2010
Сообщений: 32

Динамическое название функции
Предположим в переменной у меня содержится имя функции, как мне создать её экземпляр?
Сейчас я создаю так:
element = new (window[elementName])();

Но позже не могу исследовать полученный элемент и получаю ошибку:
TypeError: Function.prototype.toString called on incompatible object

Может надо создавать как-то по другому?

Последний раз редактировалось Kein, 04.06.2010 в 16:47.
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2010, 17:04
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

function element() {
return (window[elementName])();
}
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2010, 17:09
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Kein
переменной у меня содержится имя функции
зачем?
почему бы не хранить в переменной ссылку на ф-цию?

по-моему, вы подходите к проблеме не с того конца, и ее надо решать не используя имена ф-ций, а по нормальному
опишите свою более общую проблему
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2010, 17:15
Аспирант
Отправить личное сообщение для Kein Посмотреть профиль Найти все сообщения от Kein
 
Регистрация: 11.01.2010
Сообщений: 32

Есть абстрактный объект который который представляет собой список, с расширенными методами поиска, перебора итд.
Каждый элемент создается вроде:
list.add({name: 'one', description: 'bla-bla'}, 'category');
Второй параметр это и есть название класса. Все передаваемые классы имеют свой одинаковый интерфейс и принимают данные идущие первым аргументом.
Получается в таком случае мне можно просто написать

list.add({name: 'one', description: 'bla-bla'}, category);

так?
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2010, 17:23
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Kein
Получается в таком случае мне можно просто написать

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);
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2010, 17:33
Аспирант
Отправить личное сообщение для Kein Посмотреть профиль Найти все сообщения от Kein
 
Регистрация: 11.01.2010
Сообщений: 32

да, все получилось, php привычка хранить имя класса в тексте))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Возвращение значения из функции dba Events/DOM/Window 21 06.10.2009 01:33
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04