В последнем случае возбуждается исключение, это значит, что он менее производительный чем первый.
И еще, не назначайте так обработчики событий:
element.onclick
Нужно использовать специальные методы для работы с событиями (
addEventListener и
attachEvent). Для этого можно написать свою обертку:
<a href="#" id="link">click</a>
<script>
var $ = function(element)
{
if (!(this instanceof $))
return new $(element);
this.element = element;
};
$.prototype =
{
constructor: $,
on: function(event, callback)
{
if (typeof event !== 'string' && typeof callback !== 'function')
return this;
if (this.element.addEventListener)
this.element.addEventListener(event, callback, false);
else if (this.element.attachEvent)
{
this.element.attachEvent('on' + event, function(event)
{
callback.call(this, {
// ...
});
});
}
return this;
}
};
$(document.getElementById('link')).on('click', function(event) {
alert(event.target);
});
</script>