所有
我对JavaScript开发很陌生,所以这可能是一个非常愚蠢的问题。
但是,我正在阅读Apple的Safari开发者库,我注意到他们在附加eventListeners时使用“匿名函数”:
this.element.addEventListener('touchstart', function(e) { return self.onTouchStart(e) }, false);
这有什么不同之处:
this.element.addEventListener('touchstart', onTouchStart, false);
假设它不同,怎么样?如果不是,他们为什么要使用这种方法?
以下是我所指的文件的链接:
Safari Developer Guide - Interactive Visual Effects
一些澄清......
我理解这样做的好处:
this.element.addEventListener('touchstart', function(e) { alert("touched")}, false);
在此......
this.element.addEventListener('touchstart', onTouchStart, false);
function onTouchStart(e) {
alert("touched");
}
在这种情况下,您已经保存了创建“永久”命名函数。
但是,在Apple的情况下,名为“onTouchStart”的函数是一种永久的命名函数。那么,还有一个好处吗?
提前致谢!
答案 0 :(得分:2)
只要您不需要访问“self”对象的任何成员或提供任何其他参数,您的工作方式就可以正常工作。通常,你这样做,所以他们使用的技术创建了一个闭包,它将允许你访问局部变量(例如“self”,它通常只是对调用函数中“this”的引用)
答案 1 :(得分:0)
这是一个非常简单的功能,只需做一件事就不会在其他任何地方使用。在没有必要时,根本不需要命名。如果不这样做,代码更简洁,更简单,尽管两种方法都是等效的。确切地说,第一个与:
相同function onTouchStart(e) {
return self.onTouchStart(e);
}
this.element.addEventListener('touchstart', onTouchStart, false);