近来看了国外的一些知名网站的JS源码,发现里面很多地方都用到对象直接量,特别是定义一些对象和类的时候。也许你会问什么是对象直接量? ECMAScript V3定义了对象直接量的语法,使你能够创建对象并定义它的属性。对象直接量(也称为对象初始化程序)是由一个列表构成的,这个列表的元素是用冒号分隔的属性/值对,元素之间用逗号隔开的,整个列表包含花括号之中。下面就是一个简单的例子:
var shenni= {age:24,birthday:'1982年2月14日'};
也可以嵌套:
var shenni= {age:24,birthday:{year:'1982年',month:'2月',day:'14日'}};
需要注意的就是,对象直接量中的属性值不必是产量,它可以是任意的JavaScript表达式
如:
var shenni= {age:(2+4),birthday:{year:'1982年',month:'2月',day:'14日'}};
可能有些人看这个东西很像一个东西,对就是JSON。看看下面的这条语句就知道了:
{'age':24,'birthday':'1982年2月14日'};
这就是JSON,唯一的区别就是age和'age'。它们这么像,是不是应该有什么联系或者什么姻缘呢。
不错,它们是可以相互转换地,对象直接量可以转换为JSON,JSON也可以转换为对象直接量。这也是JSON
能够作为第三方的交换数据的重要原因之一,它可以直接转换,然后在JavaScript中使用。
转换的方法如下:
对象直接量 -> JSON ,这个需要用到W3C官方提供的JOSN.js进行转换。其实这个js里面的代码也简单,有兴趣的朋友可以下载看一看。
var JSON = JSON.stringify(shenni) OK, 这样变量JSON就是对象直接量了。
JSON-> 对象直接量:
我的另外一篇谈论EVAL方法的用途里面已经提到这方面的应用了!
eval ('var sheni = ('+JSON+')');//JSON 为{'age':24,'birthday':'1982年2月14日'}字符串