近來看了國外的一些知名網站的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日'}字符串