Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 调用exampleFunction()和exampleFunction.call()之间有什么区别?_Flash_Actionscript 3_Apache Flex - Fatal编程技术网

Flash 调用exampleFunction()和exampleFunction.call()之间有什么区别?

Flash 调用exampleFunction()和exampleFunction.call()之间有什么区别?,flash,actionscript-3,apache-flex,Flash,Actionscript 3,Apache Flex,调用exampleFunction()和exampleFunction.call()之间有什么区别? Actionscript上有一个功能,允许您通过“调用”方法使用函数。例如,要使用下面的“test”函数,我可以编写test()和test.call() 区别是什么?与ECMAScript(As从中派生)一样,它允许通过第一个参数指定“this”上下文 请参阅文档。请注意有关函数与方法的备注–或–以及示例 也就是说,考虑到: function f ():* { return this; } va

调用exampleFunction()exampleFunction.call()之间有什么区别? Actionscript上有一个功能,允许您通过“调用”方法使用函数。例如,要使用下面的“test”函数,我可以编写test()和test.call()

区别是什么?

与ECMAScript(As从中派生)一样,它允许通过第一个参数指定“this”上下文

请参阅文档。请注意有关函数与方法的备注–或–以及示例

也就是说,考虑到:

function f ():* { return this; }
var x:Object = {f: f};
然后:

f.call(x)
x.f()
计算为
x
,而
f()
没有,因为它有一个不同的“this”(而是计算为
Global

如果使用了
f.call()
(无参数),则“this”将为NaN,而
f()
,如上所述,将
全局
作为“this”。尝试在测试代码中使用
trace(this)
,因为它将产生更有用的上下文信息

愉快的编码。

另请注意,根据Jackson Dunstan的这项研究,.call()方法似乎慢了10倍:

当您传递函数并希望动态使用它们时,实际的区别就出现了,尽管apply()更常用于此,因为它允许您更动态地构造参数列表


查看这篇文章,了解有关您可能希望使用这些方法的某些情况的更多信息

Chris,您可能应该总结这篇文章,因为如果整个答案都在链接中,StackOverflow可能会对这些答案表示不满,并可能会将其删除。感谢您培训新学员。我的帖子也是为了补充pst非常好的答案,但我不允许对他的答案发表评论。
function f ():* { return this; }
var x:Object = {f: f};