Javascript toSource然后toObject

时间:2010-11-22 23:07:05

标签: javascript string object

当toSource方法用于对象时..就像这样

({name:"myname", value:"myvalue"})

我的问题是你如何将它转换回对象?或者更确切地说,只需访问

等属性
alert(objectName.name);

因此警告“我的名字”

2 个答案:

答案 0 :(得分:3)

使用eval将其更改回对象。 alert(eval({name:"myname"}.toSource()).name)

答案 1 :(得分:2)

toSource()返回一个字符串,因此你可以使用javascript的.replace()方法,传递一个正则表达式去掉括号,然后在结果字符串上调用JSON.parse()来转换它回到一个物体。

像这样:

 var obj = {name: "myname", value:"myvalue"};
 var toSourced = obj.toSource();
 var stringObj = toSourced.replace(/\((.*)\)/, "$1");
 var objAgain = JSON.parse(stringObj);
 alert(objAgain.name);

作为附注,IE或Chrome不支持toSource(),您应该避免使用它,因为您可以将JSON对象转换为字符串,将其传递给JSON.stringify(),这是本机的在IE8 +,Firefox和Chrome中。