Search code examples
javascriptperformancecachingdelegation

Does it make sense to cache event.target?


considering thoses javascript codes , is there an advantage to cache the event.target ? i use this kind of event to avoid thousand of eventlistener attach in a contener .

should i do this :

$element.addEventListener("click",function(event)
{

    if(event.target.id == "someid" )
    {
        event.target.dosomething
        event.target.dosomething
        event.target.dosomething
        event.target.dosomething
    }
    else if (event.target.id == "someanotherid" )
    {
        event.target.dosomething
        event.target.dosomething
        event.target.dosomething
        event.target.dosomething
    }

});

or this :

$element.addEventListener("click",function(event)
    {

        if(event.target.id == "someid" )
        {
          var targetA = event.target;

            targetA.dosomething
            targetA.dosomething
            targetA.dosomething
            targetA.dosomething
        }
        else if (event.target.id == "someanotherid" )
        {
          var targetB = event.target;

            targetB.dosomething
            targetB.dosomething
            targetB.dosomething
            targetB.dosomething
        }

    });

Solution

  • Yes, it does make sense. Variables are faster than property lookup. And no, you should do

    $element.addEventListener("click", function(event) {
        var target = event.target;
        if (target.id == "someid") {
            target.dosomething1
            target.dosomething2
            target.dosomething3
            target.dosomething4
        } else if (target.id == "someanotherid") {
            target.dosomethingelse1
            target.dosomethingelse2
            target.dosomethingelse3
            target.dosomethingelse4
        }
    });