由于JavaScript的靈活性,可以讓每個人按照自己的習(xí)慣進(jìn)行編寫代碼.有函數(shù)式的編程方式,也有現(xiàn)在用的較為廣泛的對象字面量.由于面向?qū)ο蟮某霈F(xiàn),JavaScript剛開始的函數(shù)編程也逐漸演化為類式編程方式.現(xiàn)在我對幾種比較熟悉的編程習(xí)慣進(jìn)行簡單的說明:
1.對象字面量:
var person = { name:null, setName:function(name){ this.name = name; return this.name; }, getName:function(){ alert(this.name); } }
具有JavaScript特色的一種編程方式,以類為單位含有屬性name,方法setName和getName.調(diào)用方法比較簡便person.setname('R'),this由此至終均指向person,person的屬性與方法均不私有,可以進(jìn)行調(diào)用.
2.prototype構(gòu)造器調(diào)用模式
var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.prototype.getName = function(){ alert(this.name); }
也是很常見的編程方式,創(chuàng)建一個Person類,然后利用prototype對類進(jìn)行擴(kuò)展,添加方法.與對象字面量最大區(qū)別在于,調(diào)用該類的方法時,必須先new(跟Java調(diào)用類相似).var p = new Person();p.getName();如果不用new,而直接創(chuàng)建,會產(chǎn)生錯誤.而且這種錯誤將不會報錯,難以發(fā)現(xiàn).錯誤的產(chǎn)生原因來自于this指向Person.prototype,而Person并沒有setName方法.
3.利用匿名函數(shù)進(jìn)行函數(shù)編程
(function(){ var name; var setName = function(n){ name = n; } window['person']['setName'] = setName; var getName = function(){ alert(name); } window['person']['getName'] = getName; })()
類的出現(xiàn),其中一個最大的好處就是降低了全局變量的出現(xiàn),但是如果你依舊習(xí)慣于函數(shù)式編程,沒關(guān)系,只要創(chuàng)建一個匿名函數(shù),進(jìn)行閉包,就可以再里面進(jìn)行函數(shù)編程,也不需要擔(dān)心全局變量的出現(xiàn).如上所看到的var name;在匿名函數(shù)外部是無法調(diào)用的,然后利用外部的變量來調(diào)用內(nèi)部的函數(shù),或者是變量.可以借此創(chuàng)建私有變量和私有方法.
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 下一頁 JavaScript對象探討 [2]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|