Javascript初学者语法问题

时间:2011-06-19 11:08:51

标签: javascript syntax

我试图了解这两个jQuery片段之间的区别是什么,因为它们会有相同的结果。

1

var method = {
      myFunctionA: function() { 
        // do something 
      },
      myFunctionB: function() { 
        // do something
      },
    }

$(selector1).click(function() { method.myFunctionA(this) });
$(selector2).click(function() { method.myFunctionB(this) });

2

function myFunctionA(){
    // do something
}

function myFunctionB(){
    // do something
}

$(selector1).click(myFunctionA);
$(selector2).click(myFunctionB);

2 个答案:

答案 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原型的编程的基本概念。