【发布时间】:2011-04-10 18:51:33
【问题描述】:
我正在寻找一种跨浏览器将 Javascript 对象序列化(和反序列化)为字符串的解决方案,包括恰好是函数的对象成员。一个典型的对象如下所示:
{
color: 'red',
doSomething: function (arg) {
alert('Do someting called with ' + arg);
}
}
doSomething() 将只包含局部变量(无需同时序列化调用上下文!)。
JSON.stringify() 将忽略 'doSomething' 成员,因为它是一个函数。我知道 toSource() 方法会做我想做的,但它是 FF 特定的。
【问题讨论】:
-
我只是发表评论,因为我没有提供完整的解决方案。可能有帮助的一件事是,您可以通过调用
toString()来对函数进行字符串化。 jsfiddle.net/HFMaz 不确定是否支持跨浏览器。 -
这是经常被问到的,但我找不到任何相关的东西:\为什么你仍然需要序列化函数?也许有更好的方法来安排你的代码?
-
这是所见即所得的项目。每个 Javascript 对象(带有方法)都定义了页面组件的行为。页面内容(包括 JS 行为)必须保存在服务器端,因此需要序列化。
-
代码是如何创建的?看来您应该可以在流程的早期阶段访问所有这些的字符串表示形式。
-
我希望这不会被广大公众使用......否则你必须确保我无法 XSS 那个东西。
标签: javascript json function serialization stringify