手机版

JavaScript序列化对象实现代码

时间:2021-10-25 来源:互联网 编辑:宝哥软件园 浏览:

作者发的是一张图,大家可以放大看。前些天说过关于Java脚本语言的字面语法问题,觉得挺有意思的,于是又研究了一下,能不能把对象再转化为逐字的形式呢?就像我们平时说的序列化和反序列化啥的。当然可以了,因为Java脚本语言对象自身都提供了一个toString()方法,默认就是返回简单对象的逐字的形式。我们需要作的就是判断对象的具体类型,然后分别连载每种对象,再输出为目标的逐字的语法形式就行了。准确的判断对象类型,使用我曾经说过的__类型_ _方法就行了,序列化对象实例的代码如下:复制代码代码如下:对象。原型。serialize=function(){ var type=_ _ type of _ _(this);switch(type){ case ' Array ' : { var strArray='[';for(var I=0;我这个长度;风险值值=' ';if (this[i] ) { value=this[i].serialize();} strArray=value ',';} if(Strarray。charat(Strarray。length-1)=','){ strArray=strArray.substr(0,strArray。长度-1);} Strarray=']';返回strArray } case ' Date ' : { return ' new Date(' this。gettime()')';}大小写“布尔”:大小写“功能”:大小写“号码”:大小写“String”: {返回此。tostring();}默认值: { var serialize=' {for(此处为定义变量键){ if (key=='Serialize ')继续;定义变量子序列化=' nullif(这个[钥匙]!=undefined){ subserialize=this[key].serialize();} serialize=' \ r \ n ' key ' : ' subserialize ',';} if(序列化。charat(序列化。length-1)=','){ serialize=serialize.substr(0,serialize。长度-1);} serialize=' \ r \ n }返回序列化;} } };其实就是排列和目标的属性比较的麻烦,需要递归的做这个连载操作。不过需要注意序列化方法就不需要被序列化出来了。下面是测试示例,不过这个序列化方法没有对环状引用做检查,能序列化的对象很有限。复制代码代码如下: var obj 1=[];警报(obj1 .序列化());var obj 2=[1 ]、[ 2 ]、[ 3 ]、[ 4 ]、[ 5 ]、[ 6 ]、[ 7 ]、[ 8 ]、[9 、[ 0 ]]]]]]];警报(obj2 .序列化());var obj3={ Properties1 : 1,Properties2 : '2 ',Properties3 : [3],method 1 : function()}返回此。属性一这个。属性3[0];},方法2 :函数(){返回这个。前置2;} };警报(obj3 .序列化());var obj4=[null,1,' string ',true,function(){ return '唐珂';},新对象()];警报(obj4 .序列化());至于反序列化就非常的容易了,把上面的序列化结果用评价评价执行一下,就得到类实例了。

版权声明:JavaScript序列化对象实现代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。