Javascript toSource затем toObject - PullRequest
1 голос
/ 23 ноября 2010

когда метод toSource используется для объекта .. это будет выглядеть так

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

Мой вопрос: как бы вы преобразовали его обратно в объект?или, скорее, просто получить доступ к свойствам, таким как

alert(objectName.name);

, предупреждая, таким образом, «мое имя»

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

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

В качестве примечания: toSource() не поддерживается IE или Chrome, и вам следует избегать его использования, поскольку вы можете превратить объект JSON в строку с помощьюпередавая его в JSON.stringify(), который является родным в IE8 +, Firefox и Chrome.

3 голосов
/ 23 ноября 2010

Используйте eval, чтобы изменить его обратно на объект. alert(eval({name:"myname"}.toSource()).name).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...