有人可以解释为什么这是传递一个对象

Tob*_*oby 2 javascript jquery

我有类似以下的东西..

$(document).ready(function() {
    $('#doReport').click(doReport);
});

function doReport(type) {
    if (type === undefined) {
        type = 'blah';
    }
    alert (type);
}
Run Code Online (Sandbox Code Playgroud)

如果我doReport()在控制台中运行或在javascript中独立运行,它将返回'blah'(如预期的那样),显然如果我调用doReport('wibble');它会返回'wibble',如你所料.

但是如果我通过单击带有ID doReport的元素来运行它(利用我在.ready中设置的绑定),它将返回[object Object]

我不明白为什么会这样.

Poi*_*nty 7

jQuery库为您的事件处理程序传递一个"事件"对象.它将永远存在.它是本机浏览器对象的"包装"或"固定"版本,使其更容易处理.

是这些对象的文档.

另外值得注意的是,jQuery将调用您的处理程序函数,这些函数this引用要为其调用处理程序的DOM元素.

另外,正如@ Ericson578在评论中指出的那样,jQuery允许设置其他参数,这意味着您的处理程序可能会传递其他参数.如果您将单个事件处理函数绑定到不同的元素,那么这可能很有用,但您希望使用某些不同的标志或基于元素的详细信息来限定其行为.