我需要使用通过功能 作为参数发送的名称来声明一个变量的值来声明一个变量的方式/参数是有使用功能参数的
function CreateDroptable(npcName) {
Droptable.npcName = new Droptable();
}
什么,我想这做的是,如果输入“CreateDroptable(妖精)” 它会创建变量“Droptable.goblin” 而是它宣布它像“Droptable.npcName”
反正是有解决它?
我需要使用通过功能 作为参数发送的名称来声明一个变量的值来声明一个变量的方式/参数是有使用功能参数的
function CreateDroptable(npcName) {
Droptable.npcName = new Droptable();
}
什么,我想这做的是,如果输入“CreateDroptable(妖精)” 它会创建变量“Droptable.goblin” 而是它宣布它像“Droptable.npcName”
反正是有解决它?
function CreateDroptable(npcName) {
Droptable[npcName] = new Droptable();
}
应该这样做。由于这个原因,字符串/数组/括号表示法就在那里。 :)
编辑:
我注意到你提到的相应使用它:CreateDroptable(goblin)
这将无法正常工作的。它应该像这样使用:
CreateDroptable("goblin");
其中goblin是一个字符串,而不是一个变量。
nope这给了我这个错误:意想不到的令牌[ – 2015-02-17 22:24:59
@jonaskjellerup你可以重新发布你错误得到些什么?它在你评论时没有出现。 – 2015-02-17 22:26:24
发现问题是我忘记删除“。”之前的“[”,但又给出了与下面的解决方案相同的问题 – 2015-02-17 22:33:02
尝试...
function CreateDroptable(npcName) {
Dreoptable[npcName] = new Droptable();
}
然后,当宣布...
CreateDroptable("goblin");
呼叫变成...
Droptable["goblin"](1,2,3);
这种有效的问题,但它并不是因为Droptable是一个对象,并且此解决方案使得数组可以像普通变量一样工作 – 2015-02-17 22:31:24
如果你想使用直对象,而不是变量/数组。然后你必须去面向对象的路线 - 这与你所做的有点不同。
function npc(type, health, strength) {
this.type= type;
this.health= health;
this.strength= strength;
}
var goblin= new npc("Goblin", 100, 50);
var bat = new npc("Bat", 65, 1);
这整体看起来更加简洁,而且是做事的传统方式。但它可能并不完全是你要找的东西。
希望它有帮助。
快乐编码!
http://stackoverflow.com/questions/5613834/convert-string-to-variable-name-in-javascript – 2015-02-17 22:24:27