栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

类型对象的Javascript序列化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类型对象的Javascript序列化

首先,这是自定义序列化/反序列化的简单示例:

function Person( name, sex, age ) {    this.name = name;    this.sex = sex;    this.age = age;}Person.prototype.serialize = function () {    var obj = this;    return '{ ' + Object.getOwnPropertyNames( this ).map( function ( key ) {        var value = obj[key];        if ( typeof value === 'string' ) { value = '"' + value + '"'; }        return '"' + key + '": ' + value;    }).join( ', ' ) + ' }';};Person.deserialize = function ( input ) {    var obj = JSON.parse( input );    return new Person( obj.name, obj.sex, obj.age );};

用法:

首先,我们创建一个新的实例对象:

var person = new Person( 'John', 'male', 25 );

现在,我们使用以下

Person.prototype.serialize
方法将该对象序列化为字符串:

var string = person.serialize();

这将使用以下字符串:

{ "name": "John", "sex": "male", "age": 25 }

最后,我们使用

Person.deserialize
静态方法反序列化该字符串:

var person2 = Person.deserialize( string );

现在,

person2
是的实例,
Person
并且包含与原始
person
实例相同的属性值。

现场演示: http
//jsfiddle.net/VMqQN/


现在,尽管

Person.deserialize
在任何情况下都需要静态方法(它在
JSON.parse
内部使用,并调用
Person
构造方法以初始化新实例),但
Person.prototype.serialize
另一方面,仅在内置
JSON.stringify
静态方法不足时才需要该方法。

在我上面的示例中,

var string = JSON.stringify( person)
也可以完成这项工作,因此不需要自定义序列化机制。请参阅此处:http :
//jsfiddle.net/VMqQN/1/但是,您的情况更为复杂,因此需要定义一个自定义序列化函数。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号