在JavaScript中使用2D数组创建方法

时间:2013-11-10 03:36:22

标签: javascript arrays methods multidimensional-array

我已经创建了一个2D数组并通过我的代码与它进行了很多接口,但是当我尝试做这样的事情时:

worldmap[x][y].eventAct = function() { 
     State.updateState("WorldMap"); 
     console.log("Event called"); 
}

但是当我这样做时它不起作用:

worldmap[x].eventAct = function() { 
     State.updateState("WorldMap"); 
     console.log("Event called"); 
}

它有效,但它变得无用,因为我不知道事件发生的x和y是什么,我只知道x!

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果worldmap中的值全部为primitive values,则只需can't hold properties

var foo = 'bar';
foo.baz = 'qux';
console.log(foo.baz); // undefined

可以设置属性,因为原语can be boxed被视为对象。但是,拳击不会持续存在,所以属性会在之后立即丢失。

因此,您可以创建Object来保存值和方法:

worldmap[x][y] = {
    value: worldmap[x][y],

    eventAct: function() {
        State.updateState("WorldMap");
        console.log("Event called");
    }
};
console.log(worldmap[x][y].value);

或者,类似于您的第二个片段,您可以将方法附加到数组并接受缺少的索引作为参数:

worldmap[x].eventAct = function (y) {
    var value = this[y];

    State.updateState("WorldMap"); 
    console.log("Event called");
};