网乐原科技

直播中

news center新闻中心
首页 > 资讯中心 > 软件技术

Flash5 ActionScript高级编程指南(7)

发布时间:2008-08-14     阅读数: 次       来源:网乐原科技
三、自定义函数的运用

2、函数语法的深入分析

  精通面向对象语言的朋友一看上面的语法说明就一定会马上产生这样的感觉:有名函数在用作构造函数时怎么那么别扭,既然已经是构造函数了,为什么对成员赋值还非得加上this?为对象加载方法又为什么必须要加上一个讨厌的.prototype,而且看上去好象还非要用无名函数来定义。不忙,其实只要知道了其中的实现机理,这一切问题就雪融冰释了。

  第一点认识:所有的有名函数实现原理都一样。不论是一般的函数也好,对象的构造函数也好,它们在使用时没有任何区别。你完全可以用任何一个函数(包括系统预定义的函数)通过new来构造一个对象。比如下面这条语句在语法上是完全正确的:
  a = new stop(); // stop是FAS中的系统指令函数
在此例中,你甚至还可以为stop“对象”加上方法:
  stop.prototype.func = function() {return 1;} // 3.1式
  a = new stop();
  trace(a.func()); // 输出 1
当然,我们不提倡把系统预定义函数当成构造函数来用,只是想以此说明所有的有名函数在语法上并没有什么区别。

  第二点认识:无名函数与有名函数之间的差别只是有没有名字。这样的提法似乎有点出乎意料,不过事实就是这样。FAS里的函数名归根结底也是和C语言中的一样,是一个具有function类型的变量。你可以把它作为参数调用另一个函数,比如系统对象Array中的sort方法就是这么做的:
  myArray.sort(orderFunc); // orderFunc为一个比较函数的函数名
也可以把它赋值给其他的变量:
  myFunc2 = myFunc1; // myFunc1为一个已定义的函数
这时对myFunc2的调用与对myFunc1的调用就完全相同了。但是无名函数由于没有名字,所以只能通过把定义式直接赋值给某个变量(如3.1式)来实现其功能(有名函数不能如此赋值)。其他就没有区别了(无名函数同样也可以不赋值给某个变量,不过这样的话就没法调用它了,等于白写)。由此可以看出,FAS中的function类型就相当于C语言中的函数指针类型。

网乐原科技

客服热线:0771-5761507

QQ:53290011

QQ邮箱:53290011@qq.com

工作时间:周一到周五 9:00-18:00

地址:广西南宁市江南万达写字楼C16栋1309室

物联网开发

关注我们

微信小商店 腾讯QQ客服 微信客服