当toSource方法用于对象时..就像这样
({name:"myname", value:"myvalue"})
我的问题是你如何将它转换回对象?或者更确切地说,只需访问
等属性alert(objectName.name);
因此警告“我的名字”
答案 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中。