Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к методам существующего объекта, объект из значения меременной 
V
    Опции темы
Deg
  Дата 30.9.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Добый день.

Назрел вопрос. Как получить доступ к методам объекта, если допустить, что он не известен, но его имя хранится в переменной? Или другими словами, получить доступ к методу meth1() (например), имея название объекта в переменной var1? Например:

Код

var1 = "myObj1";


а нужно получить доступ (выполнить) к методу meth1() данного объекта:

Код

myObj1.meth1();


Спасибо, надеюсь доходчиво объяснил.

Добавлено через 5 минут и 5 секунд
Есть вариант с eval попробовать, есть еще варианты?
PM MAIL WWW ICQ Skype   Вверх
magelan
Дата 30.9.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 3
Всего: 16



var obj = eval( var1 );
obj.meth1()

нет?
PM MAIL   Вверх
ksnk
Дата 30.9.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



...


Это сообщение отредактировал(а) ksnk - 30.9.2010, 12:01


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
CruorVult
Дата 30.9.2010, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 3
Всего: 28



Код

var var1 = "myObj1";
var obj = new window[var1];
obj.meth1();


Это сообщение отредактировал(а) CruorVult - 30.9.2010, 11:14
PM MAIL Skype   Вверх
ksnk
Дата 30.9.2010, 12:02 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(CruorVult @  30.9.2010,  11:13 Найти цитируемый пост)
var var1 = "myObj1";
var obj = new window[var1];
obj.meth1();


new window - это сильно. smile 

Код

window[var1].meth1();


Добавлено через 34 секунды
Это есть объект глобальный. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
CruorVult
Дата 30.9.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 3
Всего: 28



Цитата(ksnk @  30.9.2010,  12:02 Найти цитируемый пост)
window[var1].meth1();


ksnk,  smile 

Как можно вызвать метод класса, без создания екземпляра класса?
PM MAIL Skype   Вверх
ksnk
Дата 30.9.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(CruorVult @  30.9.2010,  12:56 Найти цитируемый пост)
Как можно вызвать метод класса, без создания екземпляра класса?


Цитата(Deg @  30.9.2010,  10:04 Найти цитируемый пост)
а нужно получить доступ (выполнить) к методу meth1() данного объекта:

код Javascript
1:
myObj1.meth1();

тоесть объект УЖЕ создан. Просто его имя было введено откуда-то снаружи. Нужно ли cоздавать новый экземпляр?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
CruorVult
Дата 30.9.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 3
Всего: 28



Цитата(ksnk @  30.9.2010,  14:59 Найти цитируемый пост)
тоесть объект УЖЕ создан. Просто его имя было введено откуда-то снаружи. Нужно ли cоздавать новый экземпляр?

Ну если уже создан, то да. Хотя меня терзают очень смутные сомнения на счет этого  smile 
PM MAIL Skype   Вверх
baldina
Дата 30.9.2010, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 2
Всего: 101



В javascript нет объектов. Есть только ассоциативные массивы. Которые могут притворяться объектами.
Поэтому всегда обращение к компоненту объекта 
Код

obj.method();
obj.var = x;

можно заменить на
Код

obj['method']();
obj['var'] = x;

глобальные объекты находятся внутри объекта this. т.е. то, что Вам нужно, выглядит так:
Код

var1 = "myObj1";
this[var1].meth1();
/* или this[var1]['meth1'](); */


Добавлено через 3 минуты и 19 секунд
Цитата

глобальные объекты находятся внутри объекта this

в данном случае smile

Это сообщение отредактировал(а) baldina - 30.9.2010, 16:37
PM MAIL   Вверх
Amphiluke
Дата 30.9.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата(baldina @  30.9.2010,  20:37 Найти цитируемый пост)
В javascript нет объектов. Есть только ассоциативные массивы.


Откуда такая информация?  smile Я бы сказал, в Javascript нет ассоциативных массивов, а есть объекты, притворяющиеся ассоциативными массивами.



Цитата(baldina @  30.9.2010,  20:37 Найти цитируемый пост)
Цитата

глобальные объекты находятся внутри объекта this

в данном случае

Откуда вы это можете знать? Быть может, ТС будет выполнять этот код внутри обработчика какого-нибудь события, к примеру.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0985 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.