欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript性能優(yōu)化之事件委托實(shí)例詳解

 更新時(shí)間:2015年12月12日 16:00:41   作者:挨踢前端  
這篇文章主要介紹了javascript性能優(yōu)化之事件委托用法,結(jié)合實(shí)例形式對(duì)比分析了JavaScript中事件委托的具體用法與優(yōu)點(diǎn),需要的朋友可以參考下

本文實(shí)例分析了javascript性能優(yōu)化之事件委托。分享給大家供大家參考,具體如下:

為下面每個(gè)LI綁定一個(gè)click事件

<ul id="myLinks">
  <li id="goSomewhere" >Go somewhere</li>
  <li id="doSomething" >Do something</li>
  <li id="sayHi" >Say hi</li>
</ul>

一、傳統(tǒng)寫法

var item1=document.getElementById("goSomewhere");
var item2=document.getElementById("doSomething");
var item3=document.getElementById("sayHi");
item1.onclick = function(){
  console.log('goSomewhere');
}
item2.onclick = function(){
  console.log('doSomething');
}
item3.onclick = function(){
  alert("hello");
}

在javascript中,添加到頁(yè)面上的事件處理程序數(shù)量將直接關(guān)系到頁(yè)面的整體運(yùn)行性能,事件越多,性能越差。

導(dǎo)致原因是多方面:

1、每個(gè)函數(shù)都是對(duì)象,都會(huì)占用內(nèi)存;內(nèi)存中的對(duì)象越多,性能就越差。
2、必須事先指定所有事件處理程序而導(dǎo)致的DOM訪問(wèn)次數(shù),會(huì)延遲整個(gè)頁(yè)面的交互就緒時(shí)間。

二、事件委托

對(duì)“事件處理程序過(guò)多”問(wèn)題的解決方案就是事件委托。

事件委托利用了事件冒泡,只指定一個(gè)事件處理程序,就可以管理某一類型的所有事件。例如:click事件會(huì)一直冒泡到document層次。也就是說(shuō),我們可以為整個(gè)頁(yè)面指定一個(gè)onclick事件處理程序,而不必給每個(gè)可單擊的元素分別添加事件處理程序。

事件委托方法:

var list=document.getElementById("myLinks");
list.onclick = function(e){
  var target = e.target;  
  switch(target.id){
   case "goSomewhere":
    console.log('goSomewhere');
    break; 
   case "doSomething":
    console.log('doSomething');
    break; 
   case "sayHi":
    alert("hello");
    break; 
  }
}

三、使用事件委托的優(yōu)點(diǎn):

1)document對(duì)象很快就可以訪問(wèn),而且可以在頁(yè)面生命周期的任何時(shí)間點(diǎn)上為它添加事件處理程序(無(wú)需等待DOMContentLoaded或load事件)。換句話說(shuō),只要可單擊的元素呈現(xiàn)在頁(yè)面上,就可以立即具備適當(dāng)?shù)墓δ堋?/p>

2)在頁(yè)面中設(shè)置事件處理程序所需的時(shí)間更少。只添加一個(gè)事件處理程序所需的Dom引用更少,所花的時(shí)間也更少。

3)整個(gè)頁(yè)面占用的內(nèi)存空間更少,能夠提升整體性能。

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JS實(shí)現(xiàn)數(shù)組深拷貝的方法分析

    JS實(shí)現(xiàn)數(shù)組深拷貝的方法分析

    這篇文章主要介紹了JS實(shí)現(xiàn)數(shù)組深拷貝的方法,結(jié)合實(shí)例形式分析了javascript數(shù)組深拷貝的相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • js跑步算法的實(shí)現(xiàn)代碼

    js跑步算法的實(shí)現(xiàn)代碼

    這篇文章主要是對(duì)js跑步算法的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • js replace() 文本替換你所不知的

    js replace() 文本替換你所不知的

    今天看了一個(gè)函數(shù),功能是把形如word-word的字符串轉(zhuǎn)化為wordWord
    2010-03-03
  • JS獲取URL中的參數(shù)數(shù)據(jù)

    JS獲取URL中的參數(shù)數(shù)據(jù)

    這篇文章主要介紹了JS獲取URL中的參數(shù)數(shù)據(jù),有需要的朋友可以參考一下
    2013-12-12
  • 關(guān)于JavaScript遞歸經(jīng)典案例題詳析

    關(guān)于JavaScript遞歸經(jīng)典案例題詳析

    遞歸是算法中一個(gè)重要的解法,因此,有必要單拎出來(lái)講講,所以下面這篇文章主要給大家介紹了關(guān)于JavaScript遞歸經(jīng)典案例題的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • webpack3之loader全解析

    webpack3之loader全解析

    這篇文章主要介紹了webpack3之loader全解析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 詳解js訪問(wèn)對(duì)象的屬性和方法

    詳解js訪問(wèn)對(duì)象的屬性和方法

    在本篇文章里我們給大家分享了關(guān)于js訪問(wèn)對(duì)象的屬性和方法的相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2018-10-10
  • 原生js實(shí)現(xiàn)日期計(jì)算器功能

    原生js實(shí)現(xiàn)日期計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)日期計(jì)算器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • js讀寫cookie實(shí)現(xiàn)一個(gè)底部廣告浮層效果的兩種方法

    js讀寫cookie實(shí)現(xiàn)一個(gè)底部廣告浮層效果的兩種方法

    使用js實(shí)現(xiàn)一個(gè)頁(yè)面浮層效果,用js讀寫cookie來(lái)實(shí)現(xiàn)用戶關(guān)閉廣告的顯示狀態(tài),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-12-12
  • javascript 中select框觸發(fā)事件過(guò)程的分析

    javascript 中select框觸發(fā)事件過(guò)程的分析

    這篇文章主要介紹了javascript 中select框觸發(fā)事件過(guò)程的分析的相關(guān)資料,這里對(duì)select 觸發(fā)過(guò)程進(jìn)行了深入分析,幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08

最新評(píng)論