2011-02-04 2 views
0

Так вот мой код:Доступ значения родственного внутри списка свойств

var room = { 
    foo: [0, 1, 0, 0], 
    bar: {0: true, 1: false}, 
    layers: [[this.foo, this.bar], [this.foo, this.bar]], 
}; 

Я создаю структуру данных карты для простого холста игры. Проблема в том, что свойство моих слоев появляется как undefined для каждого элемента. Как я могу получить доступ к foo и bar внутри слоев правильно, чтобы решить эту проблему?

ответ

1
var foo = [0, 1, 0, 0]; 
var bar = {0: true, 1:false}; 
var room = { 
    foo:foo, 
    bar:bar, 
    layers:[[foo, bar], [foo, bar]] 
}; 

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

function Room(){ 
     this.foo = [0,1,0,0]; 
     this.bar = {0:true, 1:false}; 
     this.layers = [[this.foo, this.bar], [this.foo,this.bar]]; 
} 
    var room = new Room(); 
    alert("result:"+room.layers[0][0]); 
+1

Это будет работать, но есть способ, которым я можете получить доступ к foo и bar непосредственно как братья и сестры? – theabraham

0

можно использовать поглотитель:

var room = { 
    foo: [0, 1, 0, 0], 
    bar: {0: true, 1: false}, 
    get layers(){ return [[this.foo, this.bar], [this.foo, this.bar]]} 
}; 

JSFiddle: http://jsfiddle.net/wLNEj/

Смежные вопросы