将事件对象从事件处理程序传递给另一个函数

时间:2013-07-30 23:32:59

标签: javascript

event对象从事件处理程序传递给另一个函数是不好的做法。

例如:

document.getElementById('something').addEventListener('mousedown', function(e) {
    console.log(someAnotherFunction(e));
});

我不知道为什么,但对我来说,这看起来像是一个代码味道?

1 个答案:

答案 0 :(得分:1)

一般来说,这是一个完美的模式。

但是,将事件处理和应用程序逻辑分离是一个好主意。所以不要这样:

document.getElementById('something').addEventListener('mousedown', doStuff);

function doStuff(event) {
    var foo = event.target.getAttribute('foo');
    console.log("doing stuff with " + foo);
    doMagic(foo);
}

你想要这样做:

document.getElementById('something').addEventListener('mousedown', function (event) {
    var foo = event.target.getAttribute(foo);
    doStuff(foo);
});

function doStuff(foo) {
    console.log("doing stuff with " + foo);
    doMagic(foo);
}

(不确定这是否适用于您的情况,请考虑更多的一般性评论。)