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

Bryant-24 10.07.2013 15:08

Создать объект в объекте
 
Добрый день!

Сильно не ругайтесь, только начинаю изучать JS. Имеем выражение вида {A: {B: 'C'}} Насколько я понимаю, это можно расшифровать как объект A имеет объект B, который в свою очередь имеет строку C.

У меня есть массив следующего содержания: obj[A, B, C] и мне необходимо привести его к вышеописанному выражению: {A: {B: 'C'}} Я обхожу массив циклом и создаю объект в объекте (проверяя, не является ли текущий элемент последним - если так, то делаем его строкой).

Так вот я не совсем понимаю, как сделать так, чтобы предыдущий созданный объект содержал в себе текущий объект, подскажите, что прописать в цикле?

for(var i=0; i<obj.length; i++) {
???
}

skrudjmakdak 10.07.2013 15:35

Цитата:

Сообщение от Bryant-24 (Сообщение 261577)
Имеем выражение вида {A: {B: 'C'}} Насколько я понимаю, это можно расшифровать как объект A имеет объект B, который в свою очередь имеет строку C.

А, это не объект. это свойство безымянного объекта! Так же как и B, тоже не объект. это свойство.
var obj3 = new Object(); //создали объект
obj3.C = 'c';//создали ему свойство C

var obj2 = new Object();//создали еще один объект
obj2.B = obj3;//создали ему свойство B и присвоили ему ссылку(указатель) на obj3

var obj = new Object();//создали еще один объект
obj.A = obj2;//создали ему свойство A и присвоили ему ссылку(указатель) на obj2

console.log(obj);
//вывели в консоль объект obj

Bryant-24 10.07.2013 15:49

Спасибо большое, что разъяснили.
А как теперь это сделать в цикле?
Пробовал начинать так, но синтаксис еще полностью не знаю:
for(var i=0; i<obj.length; i++) {
        var obj+i = new Object();
        obj.obj[i] = obj.i;
    }
    alert(obj);

skrudjmakdak 10.07.2013 16:06

как вариант:
var obj = new Object();
obj.C = 'c';

var new_obj, old_obj

old_obj = obj;

for (var i = 0; i < 3; i++)
	{
	var new_obj = new Object();
	new_obj.property = old_obj;
	old_obj = new_obj;
	}
console.log(old_obj);


но это честно говоря извращение))


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