下述代码在Chrome49、firefox45、IE11、IE8中测试。
1、定义
查了w3school.com.cn,json的定义有两种方法:
eval解析:
var jsn1='({"aa":"22",bb:"00"})';
var jsna= eval(jsn1);
alert(jsna.bb);
alert(jsna["bb"]);
注意jsn1是字符串,且首尾要有(),否则报错。name可以不用双引号引起来。
json解析:
var jsn2='{"aa":"22","bb":"00"}';
var jsnb= JSON.parse(jsn2);
alert(jsnb.bb);
alert(jsnb["bb"]);
注意name必须用双引号引起来,否则不能解析。
2、调用
从上可知,“.”和“[]”都可调用
3、重载
var jsn2='{"aa":"22","aa":"00"}';上述代码aa将变为00,也就是可以被重新赋值。不管是eval方式(需要eval时加括号)还是json解析方式。4、其他东西
看下面的代码:
var jsn1={aa:"11","aa":"22"}
alert(jsn1.aa);
var jsn2={"aa":"22",aa:"11"}
alert(jsn2.aa);
上述代码都能弹出22。但代码与之前不同:jsn1和jsn2不再是字符串,而是直接用大括号定义。也就是说,jsn1和jsn2是对象。
var jsn0={aa:11,bb:function(d){d?alert(d):alert(1);return true},cc:jsna.bb};
jsn0.bb(2);
alert(jsn0.cc);
上述代码,将弹出2和00。
如果alert(bb),则会弹出函数代码。而如果alert(bb()),则会首先执行bb()(弹出1),然后再弹出bb函数返回值true。
用对象定义,肯定能实现json但功能,但json的优势是:快速!。因此,能用json的时候,还是考虑优先用json。
本文介绍了JSON的定义方式,包括使用eval和JSON解析方法,并探讨了如何调用JSON对象,强调了JSON在不同浏览器中的兼容性和快速特性。通过示例代码展示了对象定义与直接调用的区别,提醒开发者在适合的情况下优先选择使用JSON。

478

被折叠的 条评论
为什么被折叠?



