我已经创建了一个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!
任何帮助将不胜感激!
答案 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");
};