JavaScript:我应该为事件使用方法或函数吗?

时间:2012-05-23 00:37:20

标签: javascript function events methods mouse

我正在制作一个我正在制作的网站,而不是开始。该程序是一个带有JavaScript(和jQuery)游戏的HTML5 Canvas。要做到这一点,我必须能够告诉用户点击画布的位置。我可以这样做:

mouse = new Object();
mouse = {
   //Assign Temp Values 
   x: 0,
   y: 0,
   click: function(event) {
       //Code to get location and assign to mouse.x and mouse.y then handle click
   }
};

$(document).ready(function() {
    $('#canvas').click(function(evt) {mouse.click(evt);}); 
});

或者我可以这样做:

mouse = new Object();
mouse = {
    x: 0,
    y: 0
}

$(document).ready(function() {
    $('#canvas').click(function(evt) {
        //Code here to get location and assign to mouse.x and mouse.y and then handle click
    });
});

我知道在这种情况下,后者的代码较少,我在其他语言中看到过这样的问题,但我想知道在JavaScript中使用事件处理方法或单独函数是否有任何优势。例如:一个是良好的编程习惯,或者更高效,甚至更容易阅读。任何意见都将不胜感激。

2 个答案:

答案 0 :(得分:0)

对我来说唯一重要的是:如果你使用一个方法,那么this被设置为调用该方法的对象。但是,根据浏览器的不同,this可能会有更多有用的值进入事件处理程序,这样可以保留。您总是可以将它传递给方法,但是如果您使用函数,则this的值在函数体内可以保持不变。

答案 1 :(得分:0)

性能方面,第二种方法稍微快一点,因为你少了一个方法调用,但没有显着差异。

http://jsperf.com/method-vs-callback