2011-02-04 163 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 2011-02-04 20:44:04

0

你可以使用一个getter:

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/