博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详细说说ActionScript中function的call()方法和apply()方法
阅读量:4081 次
发布时间:2019-05-25

本文共 1446 字,大约阅读时间需要 4 分钟。

今天看到function的call和apply这两个方法,上网查了一下,有人说这两个方法是用来动态改变函数指向,并给了一个例子:如下

 import customize.my_class;

   
    public var _property:String;
   
    public function init():void
    {  
        var fn:Function = new Function();
        fn = function(...args):void
        {
            this._property = args;
        }
    
        var __obj:my_class = new my_class();
        //fn.call(__obj, "给属性赋值");
        fn.apply(__obj, new Array("给属性赋值"));
    
       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

 var __obj:my_class = new my_class();
 //fn.call(__obj, "给属性赋值");
 fn.apply(__obj, new Array("给属性赋值"));
 
 trace(__obj._property);
}

private function fn(...args):void

{
 this._property = args.toString();
}
=====================================
 定义的my_class类
public class my_class
{
 public var _property:String;
 public function my_class()
 {
  this._property = "somiok";
 }
}

后来查了黑羽老大的书:函数语句定义法和函数表达式定义法的不同还体现在this关键字的记忆上。使用函数语句定义法,则this关键字牢牢指向当前函数定义的域;若使用函数表达式定义法,则随着函数附着的对象不同,this关键字也随之改变。

语句定义法需先声明后调用的原则。

总结:如果函数是函数语句定义的形式:则call方法和apply方法只起到执行函数的作用。

如果函数是函数表达式定义形式:则call方法和apply方法起到动态改变函数指向,同时改变被指向类的一些属性。

分类:
绿色通道:
关注博主
1
0
(请您对文章做出评价)
上一篇:
下一篇:
posted @ 2010-06-30 18:04 Views(201)
1768523.html?type=1&webview=1

posted on 2011-03-24 11:11 阅读(...) 评论(...)

你可能感兴趣的文章
我对无人机重心高度的理解
查看>>
现在明白为什么无名博客里好几篇文章在讲传感器的滞后
查看>>
无人机不装脚架的好处就是降落时会比较稳,不怕倾斜侧翻。
查看>>
实际我看Pixhawk定高模式其实也是飞得很稳,飘得也不厉害
查看>>
我现在发现开课吧的智能无人机课程里面也讲GAAS
查看>>
Pixhawk解锁常见错误
查看>>
C++的模板化等等的确实比C用起来方便多了
查看>>
ROS是不是可以理解成一个虚拟机,就是操作系统之上的操作系统
查看>>
用STL algorithm轻松解决几道算法面试题
查看>>
ACfly之所以不怕炸机因为它觉得某个传感器数据不安全就立马不用了
查看>>
我发觉,不管是弄ROS OPENCV T265二次开发 SDK开发 caffe PX4 都是用的C++
查看>>
ROS的安装(包含文字和视频教程,我的ROS安装教程以这篇为准)
查看>>
国内有个码云,gitee
查看>>
原来我之前一直用的APM固件....现在很多东西明白了。
查看>>
realsense-ros里里程计相关代码
查看>>
似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。
查看>>
if __name__ == ‘__main__‘:就是Python里的main函数,脚本从这里开始执行,如果没有main函数则从上到下顺序执行。
查看>>
PX4官方用户和开发手册的首页面是会给你选择英文和中文的
查看>>
网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。
查看>>
除了LwIP还有uIP
查看>>