Flash5 ActionScript高級編程指南(8)
發(fā)布時間:2008-08-14 閱讀數(shù): 次 來源:網(wǎng)樂原科技
三、自定義函數(shù)的運用
第三點認識:對象的實質(zhì)是結(jié)構(gòu)體。這點在第一節(jié)中就已經(jīng)提到過了,只不過沒有作出具體的解釋。熟悉面向?qū)ο笳Z言的朋友都知道,對象的方法是在類中預先定義好了的,是定死的,不能更改。但象3.1式那樣,F(xiàn)AS中對象的方法卻好象是被從外面強加到對象中去的,用的是賦值形式,而且函數(shù)體中必須通過this才能訪問其對象主體。現(xiàn)在,如果我們把FAS中的對象概念理解為C語言中的結(jié)構(gòu)體,而把對象方法理解為結(jié)構(gòu)體中的函數(shù)指針變量,再來看看3.1式,是不是就發(fā)現(xiàn)原來所謂的定義方法只不過是在給函數(shù)指針變量賦值罷了。再聯(lián)想一下,是不是又發(fā)現(xiàn)其實不用什么無名函數(shù),不用什么.prototype也可以一樣定義對象方法的:
function myMethod() {
return 1;
}
function myObject() {
this.method = myMethod;
}
myobj = new myObject; // 3.2式
trace(myobj.method()); // 輸出 1
不過有一點是特殊的,F(xiàn)AS里的對象可以隨時任意添加成員。其實說白了所謂構(gòu)造函數(shù)就是在為一個已定義好的對象添加成員而已。這也就是說象上面這段程序我們可以連構(gòu)造函數(shù)也省了:
function myMethod() {
return 1;
}
myobj = new Object; // 3.3式
myobj.method = myMethod;
trace(myobj.method());
不過在為對象添加成員時必須要保證它已經(jīng)具有了對象的類型,如上3.3式是不能省略的。當然,我們在構(gòu)造函數(shù)里除了為對象添加成員外還可以對成員賦初值和加入其他的操作,在構(gòu)造對象時自動執(zhí)行。從這一意義上講,定義一個構(gòu)造函數(shù)還是有用的。