访问属性列表中的同级值

时间:2011-02-04 20:35:17

标签: javascript

所以这是我的代码:

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

我正在为简单的画布游戏创建地图数据结构。问题是我的图层属性为每个元素显示为undefined。如何正确访问图层内的foo和bar来解决这个问题?

2 个答案:

答案 0 :(得分: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 :(得分: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/