1

event将对象从事件处理程序传递到另一个函数是否被认为是一种不好的做法。

例如:

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

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

4

1 回答 1

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);
}

(不确定这是否适用于您的情况,请将此视为一般性评论。)

于 2013-07-31T09:15:23.203 回答