2015-02-17 43 views
0

我需要使用通过功能 作为参数发送的名称来声明一个变量的值来声明一个变量的方式/参数是有使用功能参数的

function CreateDroptable(npcName) { 
    Droptable.npcName = new Droptable(); 
} 

什么,我想这做的是,如果输入“CreateDroptable(妖精)” 它会创建变量“Droptable.goblin” 而是它宣布它像“Droptable.npcName”

反正是有解决它?

+0

http://stackoverflow.com/questions/5613834/convert-string-to-variable-name-in-javascript – 2015-02-17 22:24:27

回答

1
function CreateDroptable(npcName) { 
    Droptable[npcName] = new Droptable(); 
} 

应该这样做。由于这个原因,字符串/数组/括号表示法就在那里。 :)

编辑:

我注意到你提到的相应使用它:CreateDroptable(goblin)这将无法正常工作的。它应该像这样使用:

CreateDroptable("goblin"); 

其中goblin是一个字符串,而不是一个变量。

+0

nope这给了我这个错误:意想不到的令牌[ – 2015-02-17 22:24:59

+0

@jonaskjellerup你可以重新发布你错误得到些什么?它在你评论时没有出现。 – 2015-02-17 22:26:24

+0

发现问题是我忘记删除“。”之前的“[”,但又给出了与下面的解决方案相同的问题 – 2015-02-17 22:33:02

0

尝试...

function CreateDroptable(npcName) { 
    Dreoptable[npcName] = new Droptable(); 
} 

然后,当宣布...

CreateDroptable("goblin"); 

呼叫变成...

Droptable["goblin"](1,2,3); 
+0

这种有效的问题,但它并不是因为Droptable是一个对象,并且此解决方案使得数组可以像普通变量一样工作 – 2015-02-17 22:31:24

0

如果你想使用直对象,而不是变量/数组。然后你必须去面向对象的路线 - 这与你所做的有点不同。

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); 

这整体看起来更加简洁,而且是做事的传统方式。但它可能并不完全是你要找的东西。

希望它有帮助。

快乐编码!