函數(shù)對(duì)象動(dòng)態(tài)添加方法
對(duì)了,更有趣的就是添加方法了。
函數(shù)這么一擺弄之后,F(xiàn)unction對(duì)象成了二不像:不像普通類實(shí)例,也不像一個(gè)函數(shù)。這個(gè)技巧可以讓我們的函數(shù)變得很強(qiáng)大,也會(huì)讓它更復(fù)雜難以管理。 雙刃劍阿,自己掂量著辦吧。
我的建議是AS1.0可以稍多一點(diǎn)借鑒這個(gè)技巧,AS2.0用戶應(yīng)當(dāng)盡量使用標(biāo)準(zhǔn)解決方式。在小的范圍內(nèi)可以為了方便而運(yùn)用,絕不贊成大范圍大規(guī)模的使用。
shot.times = 0; shot.reload = function () { trace ("reload:"+ this.times ); if (this.times >3) { this.times = 0; } } shot.reload();
shot(); shot(); shot(); shot(); shot(); shot();
function shot():Void { shot.times ++; trace ("Shot(): times:"+ shot.times); shot.reload(); //shot的其他代碼放在這兒 } /*輸出: reload:0 Shot(): times:1 reload:1 Shot(): times:2 reload:2 Shot(): times:3 reload:3 Shot(): times:4 reload:4 Shot(): times:1 reload:1 Shot(): times:2 reload:2 */
寫在篇尾的話:
可以看出,運(yùn)用動(dòng)態(tài)添加屬性和方法的技巧,可以使Function這個(gè)特殊的東西異常強(qiáng)大起來。而且其靈活程度更是空前,試想如果動(dòng)態(tài)添加的方法可以返回函數(shù)(見第一個(gè)技巧)。不要忘了,動(dòng)態(tài)添加的方法可以直接訪問函數(shù)的輸入?yún)?shù),那么其衍生的技巧又有多少種呢?函數(shù)又可以變成怎樣的一種強(qiáng)有力的編程對(duì)象呢?
只有想不到,沒有做不到。這就是Function給我們展示的無窮靈活性。 但是,我還是要說,技巧終歸是技巧,它有其兩面性。靈活是它的優(yōu)點(diǎn),也是它的缺點(diǎn)。小范圍的運(yùn)用讓你爽快無比;大項(xiàng)目中大范圍的使用,除非你管理的很好,不然會(huì)讓你頭疼欲裂死而后快。
通讀AS2.0所有公開的類的代碼后,你會(huì)發(fā)現(xiàn)Macromedia的程序員也使用了上述的技巧。只要管理的好,這絕對(duì)是ActionScript的優(yōu)點(diǎn)所在。 AS2.0 coder們,歡喜之余,慎之又慎!
經(jīng)典論壇討論帖: http://www.95time.cn/bbs/NewsDetail.asp?id=2618229
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁(yè) 深入了解Function [2] 下一頁(yè)
◎進(jìn)入論壇Flash專欄版塊參加討論
|