Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ссылка на себя при инициализации объекта (https://javascript.ru/forum/misc/13235-ssylka-na-sebya-pri-inicializacii-obekta.html)

folibis 22.11.2010 03:11

Ссылка на себя при инициализации объекта
 
Создаю объект таким образом:

var obj = {
1:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:this.arr1},
3:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:[2,6,7]},
8:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:[8,4,5]}
};


1:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:this.arr1},

Т.е. объект состоит из массива объектов. Эти внутренние объекты состоят их набора параметров. Так вот некоторые из этих параметров дублируются. чтоб этого не допускать я хотел бы сделать так чтоб они ссылались на соответствующие свойства, которые они дублируют.

Как это сделать, не знаю. this в этом случае ссылается на Window. Self вообще Undefined.

Gvozd 22.11.2010 03:26

Цитата:

Сообщение от folibis
Self вообще Undefined.

при чем тут он?
с чего вы решили, что это вам как-то поможет?!
Цитата:

Сообщение от folibis
чтоб этого не допускать я хотел бы сделать так чтоб они ссылались на соответствующие свойства,

при такой литеральной записи, это невозможно
в таком виде задачу решить можно только идя на компромисс.
например два способа:
var obj = {
1:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:*!*obj[1].arr1*/!*},
3:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:[2,6,7]},
8:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:[8,4,5]}
};

var obj = {
1:{arr1:temp_var = [1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:temp_var},
3:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:[2,6,7]},
8:{arr1:[1,2,3,4,5,6,7,8,9,0],arr2:[1,3,8],arr3:[8,4,5]}
};


но лучше будет, если вы скажите для чего вам это нужно. и тгда мы сможем подсказать КАК ПРАВИЛЬНО сделать
скорее всего вы пытаетесь сделать то, что в данном языке делать не следует.
например в JS не стоит эмулировать классы или статические переменные
но он и без них хорошо применяем

Kolyaj 22.11.2010 11:48

Цитата:

Сообщение от Gvozd
например два способа:

Первый способ нерабочий.


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