【发布时间】:2014-11-24 12:57:52
【问题描述】:
我被一个更大的 JavaScript 应用程序(使用 jQuery Mobile)困住了,其中大部分程序逻辑已经实现。现在我想向它添加序列化(使用一个名为 JStorage 的插件)。在这个代码示例中,我将一个对象字符串化为 JSON,然后再次将其转换为一个对象(全部没有 JStorage),但是我添加到原始对象的方法会丢失,如下代码所示:
function TestObject() {
this.lang = "English";
}
// This is the method I want to keep
TestObject.prototype.showLang = function() {
console.log(this.lang)
};
var test1 = new TestObject();
var test2 = $.parseJSON(JSON.stringify(test1)); // After save and reload
test1.showLang(); // This works
test2.showLang(); // This causes an error
问题还有一个限制:在代码中,我经常使用点运算符来调用函数,如test1.showLang()。我知道我可以添加一个像这样的“全局”函数,它既适用于原版,也适用于副本:
function showLang(obj) {
console.log(obj.lang);
}
但是我必须将每个现有的函数调用从 test1.showLang() 更改为 showLang(test1) - 在我的真实项目中- 我将不得不在整个代码中执行数百次。那么有没有更简单的解决方案如何在序列化后在对象上使用现有函数?
【问题讨论】:
标签: javascript json serialization methods jstorage