将字符串转换为对象名称(强制转换)

时间:2014-10-26 07:16:54

标签: javascript string object casting

我想将字符串强制转换为现有对象。 背景:我只使用JS,没有库,也没有服务器端代码。我有现有的对象,我想要显示的元素。我使用查询字符串传递对象的名称,因此它作为字符串到达​​。示例?Room=Cube以及我最终得到的是

nextRoom = getQueryString();  // which returns a string

我要显示Cube对象。但是,如果我调用显示函数,则nextRoom包含“Cube”并且JS没有帮助:

display(nextRoom)

Javascript将其视为字符串并失败。目前我用对象伪造了它:

castToObj{"Cube":Cube, "Other":Other, "Etc":Etc, ........}
  .....  
room = castToObj[nextRoom];    // accessing the object returns the room Object

然后我可以通过以下方式显示房间:

display(room);  // now JS treats the parameter as an object

但这要求我每次添加房间时都要重写代码以修改castToObj{}内容。我想要一种方法将“Cube”转换为Cube,换句话说,将一个字符串转换为一个对象。我尝试了很多变化,但都没有成功。我可以列出我尝试过的方法,但这似乎毫无意义,因为它们都是失败的。 救命!请!

P.S我大约二十年前退休,然后学习C ++,OOP等等,所以我的javascript技能只是扩展了我的“C”编程经验。

2 个答案:

答案 0 :(得分:0)

您可以使用java脚本eval函数,但根据情况,它可能会打开您的程序进行XSS攻击。你应该小心使用它。

答案 1 :(得分:0)

首先创建一个空容器对象:

myElements = {};

然后在

中定义元素的任何地方更改代码
Cube =  ... whatever ...

myElements.Cube = ... whatever ....

所有元素(其他,等等......)。

在此之后,您只需使用

nextRoom = getQueryString(); 
display(myElements[nextRoom]);