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