Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создать объект динамически (https://javascript.ru/forum/misc/1861-sozdat-obekt-dinamicheski.html)

Bajjy 25.09.2008 23:20

Создать объект динамически
 
как создавать и работать с объектами я знаю. допустим
var renderclass = function(){}
var o = new renderclass();
var o = new Object()
//и тд..

1.а если мне нужно создать объект динамически, с определенным именем например "obj"+i?
2.как обращятся к созданному объекту через его созданное свойство. например через свойство oid сдесь:
function nobj(){
var o = new Object()
      o.oid="obj"+i
}

Octane 25.09.2008 23:26

Контекстная ссылка на объект в javascript:
this

Почитайте статью «Ключевое слово "this" в деталях».

Bajjy 25.09.2008 23:54

труба че-то не доходит. по сабжу можно разъяснить (давно такого небыло о_0)
а лучше пример

Андрей Параничев 25.09.2008 23:59

Bajjy,
Скажите для чего это вам. Возможно есть другой способ сделать задуманное.

Bajjy 26.09.2008 00:33

да нет. нужно именно это.
объяснять долго. в двух словах я сделал 3д движок но работает он только под ие так как в нем можно добавлять к тэгам свои свойства.
но я сам понимаю что это не правильно и не красиво. поэтому и нужно динамически создавать объекты со своими свойствами которые будут связаны с добавляемыми на страницу тэгами (img, div, table). проблема в том что мне нужно постоянно удалять\добавлять на страницу новые объекты

Octane 26.09.2008 00:37

Хранить данные средствами DOM вполне нормально
var node = document.getElementById('id');
node['myProperty'] = 'value';

делать дополнительный, связанный с узлом, объект всеголишь для хранения каких-то данных не всегда рационально

Bajjy 26.09.2008 00:42

тоесть это работает в любом браузере?

Octane 26.09.2008 00:43

Да, работает везде

Bajjy 26.09.2008 00:46

спасибо! избавил от лишнего гемороя. но рано или поздно все равно придется столкнуться с проблемой с объектами

Octane 26.09.2008 00:53

Как вариант, можно хранить все вновь созданные объекты в другом объекте.

var collection = {};
collection['новое_имя_объекта'] = new Конструктор();


удалять тоже просто
delete collection['имя_объекта']



или если сильно извращаться, то использовать функцию eval
eval('var obj' + i + ' = new Конструктор();');


Часовой пояс GMT +3, время: 12:09.