JSON 入門與JavaScript提高(原創(chuàng))
原文 Quick guide to somewhat advanced JavaScript tour of some OO features出處 http://www.sergiopereira.com/articles/advjs.html
什么是JSON? JavaScript Object Notation -------javascript對(duì)象符號(hào),一個(gè)Ajax中砰然出現(xiàn)的新話題.其實(shí)它就是javascript中申明對(duì)象的方法。讓我們來看一個(gè)示例


{?
???color:?'black',?
???leg_count:?4,?
???communicate:?function(repeatCount){?

};

這里我們就創(chuàng)建了一個(gè)對(duì)象引用,這個(gè)對(duì)象包含了2個(gè)屬性(color,leg_count)和一個(gè)方法(communicate),
在myPet對(duì)象的列表中不難看出,這些屬性和方法之間都是用逗號(hào)","分隔開來的。屬性很好理解,而方法的創(chuàng)建則是由一個(gè)匿名function標(biāo)記的。
在該對(duì)象被創(chuàng)建以后并且以myPet變量聲明了以后我們就可以這樣使用了:





大家可以看到,JSON可以漂亮地應(yīng)用到j(luò)avascript中任何一個(gè)地方,作為function參數(shù)、返回值、服務(wù)器響應(yīng)...
你理解了嗎?function同樣也是一個(gè)對(duì)象。
---------------------------------------------------------------
或許JS程序員中有些人從來就不這么認(rèn)為,但是function確實(shí)也是一個(gè)Object。下面我們可以做個(gè)實(shí)驗(yàn)來驗(yàn)證一下,將你的function給你的另一個(gè)function做為參數(shù)傳遞,就傳一個(gè)String一樣。































在這里我們傳遞了myDog.bark和myCat.meow給annoyThePet。注意它們后面都沒有帶括號(hào)"()",如果不這樣做的話我們傳遞的將不是"方法",而是該方法的返回值(在此例中為"Undefine")。
如果你想我的懶貓學(xué)狗狗叫,你可以這樣做:



?
Arrays, items 和對(duì)象成員object members
請(qǐng)看下面2行




你可以在array中添加items:





但是你在聲明時(shí)對(duì)索引不做數(shù)量限制,你將可以通過它的名字訪問這個(gè)JS對(duì)象中的任何成員,就象這樣,創(chuàng)建一個(gè)空的對(duì)象,然后就可以不停地添加了:



















在JS中,對(duì)象和關(guān)系型數(shù)組(hashes)兩個(gè)概念通常是沒有區(qū)別,下面的這兩行代碼是等價(jià)的:




等了這么久,我可以擁有自己的Class了么?
OO的強(qiáng)大力量來自于類Class。當(dāng)然了我們的JavaScript同樣也可以做到這一點(diǎn),請(qǐng)看吧:












但是我們?nèi)绾文軌驅(qū)⒎椒拥轿覀兊腜et? Class中來呢。我們可以為我們所有的類定義一個(gè)prototype屬性。prototype屬性其實(shí)也是一個(gè)對(duì)象,它包含一個(gè)類所擁有的一切其他對(duì)象。甚至默認(rèn)JS類(Date,String,Number)也可以擁有prototype對(duì)象,使得各種新的方法和屬性能擴(kuò)充其中,讓基礎(chǔ)類獲得更多的特性。






ps: 個(gè)人認(rèn)為象下面創(chuàng)建類,可能更簡潔一點(diǎn)。



















將方法做為參數(shù)
如果你沒有使用過支持closure的語言,象Ruby,C#,你會(huì)發(fā)現(xiàn)象這樣的語法真是太有趣了:







未完帶續(xù).........
posted on 2006-07-29 15:13 謝瑋 閱讀(581) 評(píng)論(2) 編輯 收藏 所屬分類: 流行框架 、javascript 、Web