If you declare a bunch of variables/functions in the global namespace they become properties of the global object, in the browser that would be the window object.
So the other day I was thinking of a way to find out how many of them were in a page. So I came up with this script that you can run to find out:
(function (window) { var document = window.document, hasOwnProperty = Object.prototype.hasOwnProperty, globals = [], prop, div; for (prop in window) { globals.push('<li>'); !hasOwnProperty.call(window, prop) && globals.push('@'); globals.push(prop.toString()); globals.push('</li>'); } div = document.getElementById('abc-js-globals') || document.createElement('div'); div.id = div.id || 'abc-js-globals'; div.innerHTML = '<h2>Global Variables:</h2><ul>' + globals.join('') + '</ul>'; document.body.appendChild(div); }(window));
You can paste that in the Firebug/Inspector console and a list of the globals will show up at the end of the page.
The names that start with @ mean they are properties inherited from the prototype chain.
UPDATE: I changed the code to be slightly faster (I think). I guess that makes it version 1.1.
No comments:
Post a Comment