我想将字符串强制转换为现有对象。
背景:我只使用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,换句话说,将一个字符串转换为一个对象。我尝试了很多变化,但都没有成功。我可以列出我尝试过的方法,但这似乎毫无意义,因为它们都是失败的。
救命!请!
答案 0 :(得分:0)
您可以使用java脚本eval函数,但根据情况,它可能会打开您的程序进行XSS攻击。你应该小心使用它。
答案 1 :(得分:0)
首先创建一个空容器对象:
myElements = {};
然后在
中定义元素的任何地方更改代码Cube = ... whatever ...
到
myElements.Cube = ... whatever ....
所有元素(其他,等等......)。
在此之后,您只需使用
nextRoom = getQueryString();
display(myElements[nextRoom]);