近來看了國外的一些知名網(wǎng)站的JS源碼,發(fā)現(xiàn)里面很多地方都用到對(duì)象直接量,特別是定義一些對(duì)象和類的時(shí)候。也許你會(huì)問什么是對(duì)象直接量? ECMAScript V3定義了對(duì)象直接量的語法,使你能夠創(chuàng)建對(duì)象并定義它的屬性。對(duì)象直接量(也稱為對(duì)象初始化程序)是由一個(gè)列表構(gòu)成的,這個(gè)列表的元素是用冒號(hào)分隔的屬性/值對(duì),元素之間用逗號(hào)隔開的,整個(gè)列表包含花括號(hào)之中。下面就是一個(gè)簡單的例子:
var shenni= {age:24,birthday:'1982年2月14日'};
也可以嵌套:
var shenni= {age:24,birthday:{year:'1982年',month:'2月',day:'14日'}};
需要注意的就是,對(duì)象直接量中的屬性值不必是產(chǎn)量,它可以是任意的JavaScript表達(dá)式
如:
var shenni= {age:(2+4),birthday:{year:'1982年',month:'2月',day:'14日'}};
可能有些人看這個(gè)東西很像一個(gè)東西,對(duì)就是JSON。看看下面的這條語句就知道了:
{'age':24,'birthday':'1982年2月14日'};
這就是JSON,唯一的區(qū)別就是age和'age'。它們這么像,是不是應(yīng)該有什么聯(lián)系或者什么姻緣呢。
不錯(cuò),它們是可以相互轉(zhuǎn)換地,對(duì)象直接量可以轉(zhuǎn)換為JSON,JSON也可以轉(zhuǎn)換為對(duì)象直接量。這也是JSON
能夠作為第三方的交換數(shù)據(jù)的重要原因之一,它可以直接轉(zhuǎn)換,然后在JavaScript中使用。
轉(zhuǎn)換的方法如下:
對(duì)象直接量 -> JSON ,這個(gè)需要用到W3C官方提供的JOSN.js進(jìn)行轉(zhuǎn)換。其實(shí)這個(gè)js里面的代碼也簡單,有興趣的朋友可以下載看一看。
var JSON = JSON.stringify(shenni) OK, 這樣變量JSON就是對(duì)象直接量了。
JSON-> 對(duì)象直接量:
我的另外一篇談?wù)揈VAL方法的用途里面已經(jīng)提到這方面的應(yīng)用了!
eval ('var sheni = ('+JSON+')');//JSON 為{'age':24,'birthday':'1982年2月14日'}字符串