Вход

Просмотр полной версии : Создать объект динамически


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" в деталях (http://javascript.ru/tutorial/object/thiskeyword)».

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 Конструктор();');

Bajjy
26.09.2008, 00:57
думал над этим. но вот новое имя каким образом задать. если ставить туда переменную, то именем объекта станет не содержание переменной, а она сама

Octane
26.09.2008, 01:05
что-то не понял %)

Bajjy
26.09.2008, 01:06
неслабо)
вот теперь все.
TNX!
TNX!
TNX!