今天看到function的call和apply这两个方法,上网查了一下,有人说这两个方法是用来动态改变函数指向,并给了一个例子:如下 import customize.my_class; fn.apply(__obj, new Array("给属性赋值1","给属性赋值2")); trace(__obj._property); } ===================================== 定义的my_class类 public class my_class { public var _property:String; public function my_class() { this._property = "somiok"; } } 从上面代码可见fn函数是用函数表达式形式申明的,此时是可以动态改变函数指向的(也就是函数的this关键字随着函数的附着而改变)。 而我用函数语句形式试了一下,函数并不能动态改变自己的指向,只能起到执行函数的作用。 import customize.my_class; public var _property:String; public function init():void fn.apply(__obj, new Array("给属性赋值1","给属性赋值2"));
private function fn(...args):void
总结:如果函数是函数语句定义的形式:则call方法和apply方法只起到执行函数的作用。 如果函数是函数表达式定义形式:则call方法和apply方法起到动态改变函数指向,同时改变被指向类的一些属性。 |
详细说说ActionScript中function的call()方法apply()
最新推荐文章于 2023-07-19 14:47:20 发布