在Javascript中创建对象时引用其他参数?

时间:2014-10-03 05:34:43

标签: javascript object scope

我试图用Javascript制作一个对象,这基本上是棋盘游戏风险的地图。 (我使用的布局是here)。

我试图弄清楚如何将边境国家联系起来最简单,我想知道这个解决方案是否有效:

TERRITORY = {
  //North America (5)
  Alaska: {NAME: "Alaska_NA", LINKED: [TERRITORY.Alberta.NAME, /* ect... */]},
  Alberta = {NAME: "Alberta_NA", LINKED: [TERRITORY.Alaska.NAME, /* ect... */]},
  // ect....
};

我很确定我无法在LINKED属性中引用TERRITORY,但我想知道什么会起作用?如果可能的话,我想避免使用超长if语句。

要清楚,这就是所有代码:

TERRITORY = {
  //North America (5)
  Alaska: {NAME: "Alaska_NA", LINKED: [TERRITORY.Alberta.NAME, /* ect... */]},
  Alberta = {NAME: "Alberta_NA", LINKED: [TERRITORY.Alaska.NAME, /* ect... */]},
  // ect....
};

function country(territory) {
  this.name = territory.NAME;
  this.linked = territory.LINKED;
};

function map() {
    this.alaska = new this.country(TERRITORY.Alaska);
};

map.prototype.country = country;
map.prototype.TERRITORY = TERRITORY;

实际上,我只是认为这样的事情会起作用,但我仍然希望对其他建议有所了解:

TERRITORY = {
  //North America (5)
  Alaska: "Alaska_NA",
  Alberta = "Alberta_NA",
  // ect....
};

function country(name, linked) {
  this.name = name;
  this.controller = this.COLOR.NONE;
  this.linked = linked;
};

function map() {
  this.alaska = new this.country(TERRITORY.Alaska,
                                [TERRITORY.Alberta, /* ect... */ ]);
  // ect...
};

map.prototype.country = country;
map.prototype.TERRITORY = TERRITORY;

任何帮助都将不胜感激。

0 个答案:

没有答案