2014-06-07 43 views
0

考慮到JavaScript代碼,緩存event.target是否有優勢?我使用這種事件來避免千名事件調解員加入競爭者。緩存event.target有意義嗎?

要我這樣做:

$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 
    } 

}); 

或本:

$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 
     } 

    }); 

回答

1

是的,這有一定道理。變量比屬性查找更快。不,你應該這樣做

$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 
    } 
}); 
+0

謝謝,但經過一些反應後,我不明白事件如何緩存..我的意思是event.target.id ==「someid」和event.target.id ==「 someanotherid「是不同的元素,所以爲什麼不給它們分配不同的變量?!對於每次點擊,目標都可以改變,那麼爲什麼要緩存event.target呢? – albator

+0

您正在緩存*每次點擊*。它是一個*變量*,這意味着它被用於抽象,並且可以在後續運行中保存不同的值(不同的元素) - 就像每次事件對象包含不同的事件對象一樣。 – Bergi

+0

哇我明白了!非常感謝 – albator

相關問題