這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何優(yōu)化JavaScript的性能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司是一家網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,定制網(wǎng)站,網(wǎng)站開發(fā)公司,2013年至今是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營并提出專業(yè)建議和思路。話不多說,提到j(luò)avascript難免會(huì)聯(lián)想到文檔對(duì)象模型(DOM),它作用于XML和HTML文檔的程序接口(API),位于瀏覽器中,主要用來與HTML文檔打交道。同樣也用于Web程序中獲取XML文檔,并使用DOM API來訪問文檔中的數(shù)據(jù)。盡管DOM是個(gè)與語言無關(guān)的API,它在瀏覽器中的接口卻是用javascript實(shí)現(xiàn)的??蛻舳四_本編程大多數(shù)時(shí)候是在和底層文檔(underlying document) 打交道,DOM就成為現(xiàn)在javascript編程中的重要部分。
瀏覽器通常會(huì)把DOM和js獨(dú)立實(shí)現(xiàn)。比如在IE中,javascript的實(shí)現(xiàn)名為Jscript,位于jscript.dll文件中;DOM的實(shí)現(xiàn)則存在另一個(gè)庫中,名為mshtml.dll(內(nèi)部稱為Trident)。這個(gè)分離允許的其他技術(shù)和語言,比如VBScript,能共享使用DOM以及Trident提供的渲染函數(shù)。Safari中的DOM和渲染使用的Webkit中的WebCode實(shí)現(xiàn),javascript部分是由獨(dú)立的javascriptCode引擎(最新版本的名字為SquirrelFish)來實(shí)現(xiàn)。Google Chrome同樣使用WebKit中的WebCore庫來渲染頁面,但javascript引擎是他們自己研發(fā)的,名為V8。Firefox的javascript引擎名為SpiderMonkey(最新版的名字為TraceMonkey),與名為Gecko的渲染引擎相互獨(dú)立。
把DOM和javascript(這里指ECMAScript,JavaScript使用的ECMAScript版本為ECMAScript-262)各自想象一個(gè)島嶼,它們之間用收費(fèi)橋梁連接。ECMAScript每次訪問DOM,都需要途經(jīng)這座橋,并交納“過橋費(fèi)”。訪問DOM的次數(shù)越多,費(fèi)用越高。所以想辦法減少過橋次數(shù)就可以減少費(fèi)用。
一、超載運(yùn)輸
上面提到“過橋費(fèi)”很貴啊,那么我們盡量使需要多次去訪問DOM的時(shí)候全部整合到一次。比如最簡單的例子:
function innerHTMLLoop(){ for(var count = 0;count < 15000 ;count++){ document.getElementById('here').innerHTML +='a'; } }