http://blog.csdn.net/linjf520/article/details/8746064

大家在使用Function.apply或是call时,是否发现,第一个参数不知道怎么用,赋值了也没反应;

没反应的情况,是因为你的这个Function是普通的类成员函数;

重点总结:

从这点我们可以知道:AS3中的普通函数,与匿名函数的this区别(这个发现与JS的一样)

因为,普通类成员函数中,的this都是指当前实例对象的引用;

而,匿名函数中,的this都是指当前执行该匿名函数的thisObj参数;

看apply,call的描述中,第一个参数的说明是,要应用该方法的对象;如何理解?

难道是,

class A

{

public var name:String="a";

public function handler():void{

trace(this.name);

}

}

class B{

public var name:String="b";

}

var a:A= new A();

var func:Function=a.handler;

func.apply(new B);

这里的func.apply(new B);以上面的描述中:第一个参数的说明是,要应用该方法的对象;难不成是等价于:(new B).handler();??

其实不是的,这里文档、注释的说明是比较不清楚的;

真正的理解,还得靠自己实验之后才知道,传进了第一个参数,在函数运行时,就是函数中带有this的关键字才都代换成对应第一个参数为值;

即:

public function handler():void{

trace(this.name);

}

代码中,trace(this.name);在调用:func.apply(new B);之后,trace(this.name);==>trace((new B).name);的意思了;

但以上面这种方式,运行,大家有没有发现,怎么运行的结果都是"a";

无论你传什么对象进去,都看到不你想要的name值;

原因是,第一个传参的应用函数情况不同而起作用:

1、一般的普通类函数成员是无法正常使用(即:传个null或对象,或是不传都一个样);

2、对象匿名函数有用;

如下图看结果:

1、无法正常的运行的情况:

按函数的注释介绍应该输入:2222222才对的;

2、正常运行的情况(匿名函数):

最新文章

  1. [LeetCode] Best Time to Buy and Sell Stock II
  2. Android事件分发机制(上)
  3. Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介
  4. Git安装图解
  5. 外网主机访问虚拟机下的web服务器(NAT端口转发)
  6. 字节流和字符流(PrintStream类和PrintWiter类)
  7. c#开发Mongo笔记第四篇
  8. 解决VC几个编译问题的方法——好用
  9. R.id.layout等不能识别:cannot be resolved or is not a field
  10. Oracle创建删除用户,角色,表空间,导入导出数据库命令总结(转载)
  11. 深入理解object C中复制对象的用法(二)
  12. ASP.NET快速学习方案(.NET菜鸟的成长之路)
  13. numpy使用总结
  14. 学习 javascript (一)javascript 简介
  15. ZOJ 3795 Grouping (强连通缩点+DP最长路)
  16. Spring Data JPA使用getOne方法报错:Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate
  17. 20155326刘美岑 Exp6 信息收集与漏洞扫描
  18. 《Gradle权威指南》--Android Gradle高级自定义
  19. HIVE简单操作
  20. AdminLTE 文档

热门文章

  1. CodeForces 785D Anton and School - 2
  2. React Native 系列(二)
  3. RxSwift 系列(二)
  4. socket的使用二
  5. FastReport.Net使用:[10]报表栏目说明
  6. NOIP 2018 提高组初赛解题报告
  7. BZOJ1016 JSOI2008最小生成树计数
  8. 【矩阵快速幂优化DP】【校内测试】
  9. hdu 3294 manacher 求回文串
  10. 内功心法 -- java.util.LinkedList<E> (7)