Flashlizi's blog-专注Flash相关开发
posts - 22, comments - 17, trackbacks - 0, articles - 0
IT博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
Function类的call方法的深入研究
Posted on 2007-09-10 15:49
flashlizi
阅读(420)
评论(0)
编辑
收藏
引用
所属分类:
AS3
从as1,2开始Function类就有call和apply2个方法了。相信大家对这2个方法的应该有一些了解,这2个方法的第一个参数thisObject在有些时候很有用,合理利用他们可以使函数表现得像另一个对象的方法,而不将函数存储在该对象中。
比如官方帮助中的一个例子:
function myObject()
{
}
function myMethod(obj)
{
trace(
"
this == obj?
"
+
(
this
==
obj));
//
trace() 语句将显示:this == obj? true
}
var obj:Object
=
new
myObject();
myMethod.call(obj, obj);
但是到了as3,this始终指向函数所属的对象。上面的例子在as3中是不成立的。那是不是说call方法中的thisObject在as3中失去了意义了呢?下面的例子说明在某些情况下还是有他的用处的:
这是一个documentClass例子:
package
{
import
flash.display.Sprite;
public
class
FunctionCallExample
extends
Sprite
{
public
function FunctionCallExample()
{
var test1
=
new
TestA();
var test2
=
new
TestB();
//
不管传入对象X的function的call的参数指向任何对象,
//
function中的this永远都指向原对象X。
test1.callA.call(
this
);
//
如果给callB传入的参数是一个对象X中已定义的方法,
//
那么这个方法中的this永远都指向此对象X。
test2.callB(test1.callA);
//
当给CallB传入的参数是一个不知所属的function的时候,
//
此时这个function中的this才会由call中指向的对象来确定。
test2.callB(function()
{trace(
this
)}
);
}
}
}
internal
class
TestA
{
public
function callA()
{
trace(
this
);
}
}
internal
class
TestB
{
public
function callB(fn:Function)
{
fn.call(
this
);
fn.call(TestA);
}
}
通过上面的测试,我们发现,只有当function不知所属(即在参数中定义的函数)的时候,其中的this才会受call方法的thisObject参数控制。其他时候function中的this一律指向他所属的对象或类。同样的,apply方法也类似。
只有注册用户
登录
后才能发表评论。
Powered by:
IT博客
Copyright © flashlizi
日历
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
公告
因ZF禁止私自开设互动性质网站的原因,本人原来的blog网站:www.flashrek.com无限期暂停。而且虚拟空间访问速度慢,故在此开博,以后所有文章均在此发布。
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
(20)
AIR(1)
AJAX(5)
AS2(6)
AS3(7)
AS3设计模式(1)
Flex
随笔档案
(22)
2007年12月 (1)
2007年11月 (4)
2007年10月 (1)
2007年9月 (16)
搜索
最新评论
1. re: Input的特殊事件onpopertychange和oninput
事实上是事实是事实飒飒
--发发发发发发发发发发发发发发发发发发发发
2. re: Input的特殊事件onpopertychange和oninput
fefefe
--fefe
3. re: 在firefox中获取网页里的SWF对象
评论内容较长,点击标题查看
--17作业
4. re: AS3设计模式之一:单例模式(Singleton Pattern)
总结的很好,分享到我的博客喽!
--老姜
5. re: 游戏开发者的AS3数据结构
HAO
--GGGG
阅读排行榜
1. Input的特殊事件onpopertychange和oninput(7236)
2. AS3设计模式之一:单例模式(Singleton Pattern)(3644)
3. FlashTail:简单实用的Actionscript调试工具(3133)
4. 游戏开发者的AS3数据结构(3127)
5. 在firefox中获取网页里的SWF对象(3024)
评论排行榜
1. 谈谈Actionscript中的惰性函数定义模式(Lazy Function Definition)(6)
2. FlashTail:简单实用的Actionscript调试工具(4)
3. AS3设计模式之一:单例模式(Singleton Pattern)(2)
4. Input的特殊事件onpopertychange和oninput(2)
5. AS2:实现动态文本的描边及阴影效果(1)