JavaScript序列化和方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript序列化和方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1583字,纯文字阅读大概需要3分钟。
内容图文
![JavaScript序列化和方法](/upload/InfoBanner/zyjiaocheng/704/c4cc9c9524f041c493ea49f9e97daf56.jpg)
我是“面向对象”JavaScript的新手.目前,我有一个需要跨页面传递的对象.我的对象定义如下:
function MyObject() { this.init(); }
MyObject.prototype = {
property1: "",
property2: "",
init: function () {
this.property1 = "First";
this.property2 = "Second";
},
test: function() {
alert("Executing test!");
}
}
在我的应用程序的第1页上,我正在创建一个MyObject实例.然后我将序列化对象并将其存储在本地存储中.我正在这样做,如下所示:
var mo = new MyObject();
mo.test(); // This works
window.localStorage.setItem("myObject", JSON.stringify(mo));
现在,在第2页上,我需要获取该对象并使用它.要检索它,我使用以下内容:
var mo = window.localStorage.getItem("myObject");
mo = JSON.parse(mo);
alert(mo.property1); // This shows "First" as expected.
mo.test(); // This does not work. In fact, I get a "TypeError" that says "undefined method" in the consol window.
基于输出,看起来当我序列化对象时,不知何故函数被丢弃.我仍然可以看到属性.但我不能与我的任何功能互动.我究竟做错了什么?
解决方法:
函数无法序列化为JSON对象.
所以我建议你为实际的属性创建一个单独的对象(或对象内的属性),然后序列化这个部分.
之后,您可以使用其所有功能实例化对象,并重新应用所有属性以重新获得对工作对象的访问权限.
按照您的示例,这可能如下所示:
function MyObject() { this.init(); }
MyObject.prototype = {
data: {
property1: "",
property2: ""
},
init: function () {
this.property1 = "First";
this.property2 = "Second";
},
test: function() {
alert("Executing test!");
},
save: function( id ) {
window.localStorage.setItem( id, JSON.stringify(this.data));
},
load: function( id ) {
this.data = JSON.parse( window.getItem( id ) );
}
}
内容总结
以上是互联网集市为您收集整理的JavaScript序列化和方法全部内容,希望文章能够帮你解决JavaScript序列化和方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。