Flash5 ActionScript高级编程指南(8)
发布时间:2008-08-14 阅读数: 次 来源:网乐原科技
三、自定义函数的运用
第三点认识:对象的实质是结构体。这点在第一节中就已经提到过了,只不过没有作出具体的解释。熟悉面向对象语言的朋友都知道,对象的方法是在类中预先定义好了的,是定死的,不能更改。但象3.1式那样,FAS中对象的方法却好象是被从外面强加到对象中去的,用的是赋值形式,而且函数体中必须通过this才能访问其对象主体。现在,如果我们把FAS中的对象概念理解为C语言中的结构体,而把对象方法理解为结构体中的函数指针变量,再来看看3.1式,是不是就发现原来所谓的定义方法只不过是在给函数指针变量赋值罢了。再联想一下,是不是又发现其实不用什么无名函数,不用什么.prototype也可以一样定义对象方法的:
function myMethod() {
return 1;
}
function myObject() {
this.method = myMethod;
}
myobj = new myObject; // 3.2式
trace(myobj.method()); // 输出 1
不过有一点是特殊的,FAS里的对象可以随时任意添加成员。其实说白了所谓构造函数就是在为一个已定义好的对象添加成员而已。这也就是说象上面这段程序我们可以连构造函数也省了:
function myMethod() {
return 1;
}
myobj = new Object; // 3.3式
myobj.method = myMethod;
trace(myobj.method());
不过在为对象添加成员时必须要保证它已经具有了对象的类型,如上3.3式是不能省略的。当然,我们在构造函数里除了为对象添加成员外还可以对成员赋初值和加入其他的操作,在构造对象时自动执行。从这一意义上讲,定义一个构造函数还是有用的。