我试图了解这两个jQuery片段之间的区别是什么,因为它们会有相同的结果。
var method = {
myFunctionA: function() {
// do something
},
myFunctionB: function() {
// do something
},
}
$(selector1).click(function() { method.myFunctionA(this) });
$(selector2).click(function() { method.myFunctionB(this) });
function myFunctionA(){
// do something
}
function myFunctionB(){
// do something
}
$(selector1).click(myFunctionA);
$(selector2).click(myFunctionB);
答案 0 :(得分:2)
在示例#2中,您将(作为jQuery事件处理程序)设置为函数引用。此引用是指myFunctionA
(和其他朋友myFunctionB
)。
函数引用传递一个参数 - 请参阅jQuery文档。
在示例#1中,您还设置(作为jQuery事件处理程序)函数引用。此引用引用匿名函数,其正文如下所示:
method.myFunctionA(this);
显然除了函数参数外,它做同样的事情;你放弃了jQuery想要给你的任何参数,而是将this
发送到myFunctionA
的最终目的地。要进一步添加insule,myFunctionA
甚至不会接受参数,因此无论如何都是完全浪费的。
答案 1 :(得分:1)
基本上,第一种方法使用匿名对象并声明两种方法,而第二种方法使用过程式编程。
还有一些事项需要注意。您可以在第一个示例中执行此操作:
var method = {
myFunctionA: function() {
// do something
},
myFunctionB: function() {
// do something
},
}
$(selector1).click(method.myFunctionA);
$(selector2).click(method.myFunctionB);
方法变量最好被称为“someObject”,因为它包含一个对象,它就是包含方法的对象。
也许您需要学习面向对象编程和面向JavaScript原型的编程的基本概念。