2011-03-27 77 views
0

如果我的文檔存儲到一個變量是否會有一個速度提升,所以如果我有在變量存儲文檔

var doc= document; 
myElement = doc.getElementById('somethingSweet'); 

我知道在這個例子中它不會作出太大區別我只是想知道,但我的想法是,我的變量將作爲文檔的「指針」,因此m腳本不需要嘗試引用文檔。

+0

不,沒有區別。據我所知,「文件」本身已經是一個指針。 – 2011-03-27 13:29:55

回答

1

裹在自執行匿名函數的代碼,並通過文件作爲一個變量

(function(doc) { 
    //code 
})(document); 

就其本身而言,我沒有看到任何改進,它可以使。但是,這是一種廣泛使用的縮小技術; minified,doc會變成類似a的東西,所以無論何時您的代碼使用例如doc.getElementsByTagName,它都會變成a.getElementsByTagName。

編輯:一個簡單的例子。

//Before minifying 
(function(document) { 
    var anchor = document.createElement('a'); 
    anchor.id = 'world'; 
    document.body.appendChild(anchor); 
    document.getElementById('world').innerText = 'Hello World'; 
})(document); 

//After minifying 
(function(a){var b=a.createElement("a");b.id="world";a.body.appendChild(b);a.getElementById("world").innerText="Hello World"})(document); 

注意文檔如何變成「a」,所以我們每次保存7個字符!請注意,不建議編寫混淆代碼,並且在發送代碼之前您應該只對其進行簡化。

縮小的使用優秀Closure Compiler

1

文獻是一個全局對象。如何更快地引用另一個變量,然後文檔而不是直接文檔?這是一個退步的問題:)

1

存儲的東西將被重用在一個變量中有價值。 Document是一個糟糕的選擇,因爲它已經在窗口中可用。通常,您將存儲在document中查找的內容,這些內容通過頂級屬性不可用。在您希望保留對插件操作方便的DOM元素的引用的函數或插件中,這尤其適用於您可能開發的函數或插件,以避免每次都查看它。