作者发的是一张图,大家可以放大看。
前些天说过关于JavaScript的Literal Syntax问题,觉得挺有意思的,于是又研究了一下,能不能把对象再转化为Literal形式呢?就像我们平时说的序列化和反序列化啥的。当然可以了,因为JavaScript对象自身都提供了一个toString()方法,默认就是返回简单对象的Literal形式。
我们需要作的就是判断对象的具体类型,然后分别Serialize每种对象,再输出为Object的Literal语法形式就行了。准确的判断对象类型,使用我曾经说过的__typeof__方法就行了,序列化对象实例的代码如下:
复制代码 代码如下:
Object.prototype.Serialize = function()
{
var type = __typeof__(this);
switch(type)
{
case 'Array' :
{
var strArray = '[';
for ( var i=0 ; i < this.length ; ++i )
{
var value = '';
if ( this[i] )
{
value = this[i].Serialize();
}
strArray += value + ',';
}
if ( strArray.charAt(strArray.length-1) == ',' )
{
strArray = strArray.substr(0, strArray.length-1);
}
strArray += ']';
return strArray;
}
case 'Date' :
{
return 'new Date(' + this.getTime() + ')';
}
case 'Boolean' :
case 'Function' :
case 'Number' :
case 'String' :
{
return this.toString();
}
default :
{
var serialize = '{';
for ( var key in this )
{
if ( key == 'Serialize' ) continue;
var subserialize = 'null';
if ( this[key] != undefined )
{
subserialize = this[key].Serialize();
}
serialize += '\r\n' + key + ' : ' + subserialize + ',';
}
if ( serialize.charAt(serialize.length-1) == ',' )
{
serialize = serialize.substr(0, serialize.length-1);
}
serialize += '\r\n}';
return serialize;
}
}
};
其实就是Array和Object的属性比较的麻烦,需要递归的做这个Serialize操作。不过需要注意,Serialize方法就不需要被序列化出来了。下面是测试示例,不过这个序列化方法没有对环状引用做检查,能序列化的对象很有限。
复制代码 代码如下:
var obj1 = [];
alert(obj1.Serialize());
var obj2 = [1,[2,[3,[4,[5,[6,[7,[8,[9,[0]]]]]]]]]];
alert(obj2.Serialize());
var obj3 =
{
Properties1 : 1, Properties2 : '2', Properties3 : [3],
Method1 : function(){ return this.Properties1 + this.Properties3[0];},
Method2 : function(){ return this.Preperties2; }
};
alert(obj3.Serialize());
var obj4 = [null, 1, 'string', true, function(){return 'keke';}, new Object()];
alert(obj4.Serialize());
至于反序列化就非常的容易了,把上面的序列化结果用eval执行一下,就得到类实例了。
相关推荐:
交友群都有哪些,交友群是干什么的 ,ai猫csgo
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
内容创作新时代:自动生成文章的AI如何改变写作生态
SEO做法-提升网站流量与排名的关键秘诀,屏东网站推广招聘
ChatGPT破解版电脑:如何获得更强大的AI助手,提升工作与学习效率,ai预设动画
求一个AI软件,彻底改变你的工作与生活!
SEO收集:如何通过有效数据收集提升网站排名,鞍山商城网站建设报价
二级泛站群,zblog二级泛站群 ,李宗盛ai
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
ChatGPT为什么打不开了?揭秘背后的原因与解决办法,ai业务后端
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
什么是seo寄生虫,寄生虫seo原理 ,AI 疫
SEO更好,让你的网站从此脱颖而出,渝中的知名网站建设
什么是seo平台seo教程,什么是 seoseo有何价值 ,论文写作ai助手公众号
SEO广告:如何借助SEO提升品牌曝光与销售业绩?,网站推广怎么选择
AI免费文章生成器:轻松创作高质量内容的终极工具
ChatGPT美区要梯子吗?轻松畅享全球智能聊天体验,ai音位
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
ChatGPT,您的银行卡被拒绝了?别慌,这些方法帮您快速解决问题!,ai给那个标声调
中国AI软实力崛起:技术创新与产业应用的完美融合,seo0066
SEO本站:提升网站流量与排名的秘密武器,荆门专业的抖音seo
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
重生成AI:突破科技前沿,开启智能未来
seo网站反链是什么,网站反链怎么做 ,ai插画头像卡通
ChatGPT对于大数据发展的帮助:赋能行业变革,推动智能化未来,ai写作真的好吗
软件AI:颠覆未来的智能革命
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
OpenAI您的信用卡被拒绝了?请尝试用借记卡支付,轻松解决支付问题!,ai cdr缩略图补丁
ChatGPT4账号共享-让AI助力你的学习与工作,轻松提升效率,ai巨无霸
“关键词指白”:揭秘如何通过精准关键词优化实现流量暴增,全面分析网站seo
从语言助手到智能生活伙伴,未来的智能助手如何改变我们的生活,网站建设分站公司
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧
seo都有什么意思,seo 啥意思 ,ai园林
ChatGPT页面无法下拉?禁用浏览器扩展,轻松解决!,imba 1.6 ai
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
互联网时代的“搜索截流”新玩法:如何抓住流量红利,甘孜做优化网站软件
ChatGPT回答问题,网页无法线下滚动?解决方案轻松get!,谷歌AI铃声
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
目前最火的AI软件有哪些?深度解析必备工具
SEO添加:提升网站流量与排名的必备策略,seo团队成员中国人
SEO确实是企业增长的关键,这些技巧让你走在行业前沿,山东网站建设信息
ChatGPTWindows版本下载:让AI助力您的工作和生活,ai yamama
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图