全部,
我是 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”的函数是一个永久性的命名函数。那么,还有好处吗?
提前致谢!
最佳答案
只要您不需要访问“self”对象的任何成员或提供任何其他参数,您的方法就可以工作。不过,通常情况下,你会这样做,所以他们使用的技术会创建一个闭包,这将允许你访问局部变量(例如“self”,它通常只是调用函数中对“this”的引用)
关于javascript - 为什么在 Apple 的 Safari Developer Library 中,他们在附加 eventsListeners 时使用匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834138/