全域變數在程式語言中一向被認為是一種不好的程式方法。但現實情況是,許多著名的項目都在大量的使用著全域變量,比如,MooTools就將大量的物件放到全域空間,像是Browser
物件和$$
等。而最著名的jQuery也是用的全域變數。所以,「全域變數不好」這個理論其實處於一種很可笑的狀態。
而將全域變數暴露在外,讓使用者任意修改(除非是刻意設計的),更是一種不好的程式設計習慣,這將對導致程式很難維護。那麼,我們如何知道現有的全域變數空間裡有哪些全域變數呢?其實方法很簡單:
// UPDATE: This method is too naive // Returns an array of window property names //keys(window); // Inject an iframe and compare its `contentWindow` properties to the global window properties (function() { var iframe = document.createElement('iframe'); iframe.onload = function() { var iframeKeys = Object.keys(iframe.contentWindow); Object.keys(window).forEach(function(key) { if(!(key in iframeKeys)) { console.log(key); } }); }; iframe.src = 'about:blank'; document.body.appendChild(iframe); })();
用上面的程式碼我們可以做一下測試,你可以直接按功能鍵F12
來開啟console,輸入上面的程式碼,觀看輸出結果。你會發現,有些對象,像是window
, document
, top
, 和location
都是JavaScript內建的,而很多它的對象,都是第三方JavaScript程式碼產生的。
推薦教學:《javascript基礎教學》
以上是詳解取得JavaScript各種全域物件變數的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!