2.類的封裝
在Java里,對類的方法或是屬性,可以設(shè)置為私有,這樣就可以避免外部的調(diào)用,而JavaScript卻不存在這樣的設(shè)置,看看下面的代碼:\
var person = { name:null, init:function(name){ this.setName(name); }, setName:function(name){ this.name = name; return this.name; } } person.init('tom'); //tom
在這個(gè)類里,一共有2個(gè)方法,分別是init和setName,而我們只希望從init中運(yùn)行setName,或是以后將會為里面添加的各種方法,而不希望出現(xiàn):
person.setName('tom'); //tom
直接調(diào)用setName方法,正確的說,希望setName方法私有,還有name屬性私有.避免別的程序員使用你的類時(shí),調(diào)用了不想被調(diào)用的方法. 那應(yīng)該怎么對類的封裝好呢?試試另一種編程方式吧,看看改版的怎么樣:
var person = function(){ var name = null; var setName = function(n){ name = n; return name; } return{ init:function(n){ setName(n); } } }
這樣子,就可以講原本要私有化的方法和屬性私有化了,外部無法直接調(diào)用了.這也是利用了閉包而達(dá)成所需要的方式的.可是這種編程方式不易于讀,尤其是新手看到這種代碼會很吃力,還有在占用內(nèi)存方面也要比一般的高些. 好了,暫時(shí)先介紹到這里,下次有時(shí)間在說說閉包與作用域.
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2958015-1-1.html
本文鏈接:http://m.95time.cn/tech/web/2009/7264.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 JavaScript對象探討 [3] 下一頁
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|