调用exampleFunction()和exampleFunction.call()有什么区别?
问题描述:
致电exampleFunction()和exampleFunction.call()有什么区别? Actionscript上有一个功能,允许您通过“调用”方法使用函数。例如,使用 '测试' 功能下面,我可以写试验(+)和test.call()调用exampleFunction()和exampleFunction.call()有什么区别?
function test():void {
trace('function was called')
}
的区别是什么?
答
与ECMAScript(从中派生AS)一样,它允许通过第一个参数指定“this”上下文。
查看Function.call文档。请注意有关功能与方法–或"bound functions" –的说明和示例。
也就是说,给出:
function f():* { return this; }
var x:Object = {f: f};
然后:
两个f.call(x)
和x.f()
评估为x
而f()
没有,因为它有一个不同的 “本”(它的计算结果,而不是Global
)。
如果使用f.call()
(无参数),则“this”将是NaN,而根据上面的f()
将Global
设置为“this”。在测试代码中尝试使用trace(this)
,因为它会产生更有用的上下文信息。
快乐编码。
答
的实际差别来,当你身边路过功能和要动态地使用它们,尽管apply()更常用于此,因为它允许您更动态地构造参数列表。
退房此文出于某些情况下,你可能想要使用这些方法http://www.developria.com/2010/12/functional-actionscript-part-1.html
克里斯的更多信息,你应该总结的文章,作为答案,其中一个完整的答案是在链路通过StackOverflow的皱起了眉头并可能被删除。 – 2012-01-27 13:31:26
感谢您培训新手。此外,我的帖子是为了补充pst的非常好的答案,但我不能评论他的答案。 – Chris 2012-01-28 07:18:13