ブラウザで動作するJavaScriptでは、windowというグローバル変数が有ります。
この変数は文字通りブラウザのウィンドウを意味する変数です。
window変数がどんなプロパティを持っているか気になったので、確認するスクリプトを作ってみました。
<input id="btnInput" type="button" value="表示" /> < pre id="result"></pre > <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script> <script> $(document).ready(function(){ // 入力ボタンがクリックされたときのハンドラ $("#btnInput").click(function() { for( var prop in window ) { if ( prop == null || prop == "sessionStorage" ) { continue; } // データ型の取得 var typeStr = typeof window[ prop ]; // 値の取得 var value = ""; if ( window[ prop ] != null ) { value = window[ prop ].toString().replaceAll( "\n", "" ); } // 直接保持しているプロパティか否かを判定 var info = " "; if ( window.hasOwnProperty( prop ) == false ) { info = "継承 "; } // 取得した情報を出力 info += "型:" + typeStr + " " + prop + " " + value + "\n"; $( "#result" ).text( $( "#result" ).text() + info ); } }); String.prototype.replaceAll = function (org, dest){ return this.split(org).join(dest); } }); |
スクリプトのポイントを幾つか説明します。
for( var prop in window ) { |
windowオブジェクトが持つプロパティは、上記のforで列挙可能です。これは実際はwindowは連想配列の形になっており、keyがプロパティ名、valueがプロパティ値となっているからです。
var typeStr = typeof window[ prop ]; |
データ型はtypeofで取得可能です。typeof演算子の戻り値は文字列型となります。
if ( window.hasOwnProperty( prop ) == false ) { |
取得したプロパティは、自身で定義したものと継承元クラス(javascriptの場合,厳密にはプロトタイプ)で定義済みのものが有ります。各プロパティが、どちらであるかはhasOwnProperty()で確認可能です。
ちなみに、手元の環境(firefox9.0.1)で実行したところ、以下のプロパティを保持していました。
結構沢山有りますね。
型:object window [object Window] 型:object navigator [object Navigator] 型:object document [object HTMLDocument] 型:object InstallTrigger [object Object] 型:object console [object Object] 型:object location file:///C:/test.html 型:function $ function (a, b) { return new e.fn.init(a, b, h);} 型:function jQuery function (a, b) { return new e.fn.init(a, b, h);} 型:object qlk [object Object] 型:function getInterface function getInterface() { [native code]} 継承 型:function addEventListener function addEventListener() { [native code]} 継承 型:function removeEventListener function removeEventListener() { [native code]} 継承 型:function dispatchEvent function dispatchEvent() { [native code]} 継承 型:function dump function dump() { [native code]} 継承 型:string name 継承 型:object parent [object Window] 継承 型:object top [object Window] 継承 型:object localStorage [object Storage] 継承 型:object globalStorage [object StorageList] 継承 型:function getComputedStyle function getComputedStyle() { [native code]} 継承 型:function getSelection function getSelection() { [native code]} 継承 型:function scrollByLines function scrollByLines() { [native code]} 継承 型:object self [object Window] 継承 型:object history [object History] 継承 型:object locationbar [object BarProp] 継承 型:object menubar [object BarProp] 継承 型:object personalbar [object BarProp] 継承 型:object scrollbars [object BarProp] 継承 型:object statusbar [object BarProp] 継承 型:object toolbar [object BarProp] 継承 型:string status 継承 型:function close function close() { [native code]} 継承 型:function stop function stop() { [native code]} 継承 型:function focus function focus() { [native code]} 継承 型:function blur function blur() { [native code]} 継承 型:number length 0 継承 型:object opener 継承 型:object frameElement 継承 型:object applicationCache [object OfflineResourceList] 継承 型:function alert function alert() { [native code]} 継承 型:function confirm function confirm() { [native code]} 継承 型:function prompt function prompt() { [native code]} 継承 型:function print function print() { [native code]} 継承 型:function showModalDialog function showModalDialog() { [native code]} 継承 型:function postMessage function postMessage() { [native code]} 継承 型:function atob function atob() { [native code]} 継承 型:function btoa function btoa() { [native code]} 継承 型:function matchMedia function matchMedia() { [native code]} 継承 型:object screen [object Screen] 継承 型:number innerWidth 1136 継承 型:number innerHeight 311 継承 型:number scrollX 0 継承 型:number pageXOffset 0 継承 型:number scrollY 0 継承 型:number pageYOffset 0 継承 型:function scroll function scroll() { [native code]} 継承 型:function scrollTo function scrollTo() { [native code]} 継承 型:function scrollBy function scrollBy() { [native code]} 継承 型:number screenX 290 継承 型:number screenY 15 継承 型:number outerWidth 1154 継承 型:number outerHeight 795 継承 型:function scrollByPages function scrollByPages() { [native code]} 継承 型:function sizeToContent function sizeToContent() { [native code]} 継承 型:object content [object Window] 継承 型:boolean closed false 継承 型:object crypto [object Crypto] 継承 型:object pkcs11 継承 型:object controllers [object XULControllers] 継承 型:string defaultStatus 継承 型:number mozInnerScreenX 299 継承 型:number mozInnerScreenY 185 継承 型:number scrollMaxX 385 継承 型:number scrollMaxY 1037 継承 型:boolean fullScreen false 継承 型:function back function back() { [native code]} 継承 型:function forward function forward() { [native code]} 継承 型:function home function home() { [native code]} 継承 型:function moveTo function moveTo() { [native code]} 継承 型:function moveBy function moveBy() { [native code]} 継承 型:function resizeTo function resizeTo() { [native code]} 継承 型:function resizeBy function resizeBy() { [native code]} 継承 型:function updateCommands function updateCommands() { [native code]} 継承 型:function find function find() { [native code]} 継承 型:number mozPaintCount 21 継承 型:function mozRequestAnimationFrame function mozRequestAnimationFrame() { [native code]} 継承 型:number mozAnimationStartTime 1327684982160 継承 型:object URL [object MozURLProperty] 継承 型:object onafterprint 継承 型:object onbeforeprint 継承 型:object onbeforeunload 継承 型:object onhashchange 継承 型:object onmessage 継承 型:object onoffline 継承 型:object ononline 継承 型:object onpopstate 継承 型:object onpagehide 継承 型:object onpageshow 継承 型:object onresize 継承 型:object onunload 継承 型:object ondevicemotion 継承 型:object ondeviceorientation 継承 型:function setTimeout function setTimeout() { [native code]} 継承 型:function setInterval function setInterval() { [native code]} 継承 型:function clearTimeout function clearTimeout() { [native code]} 継承 型:function clearInterval function clearInterval() { [native code]} 継承 型:function setResizable function setResizable() { [native code]} 継承 型:function captureEvents function captureEvents() { [native code]} 継承 型:function releaseEvents function releaseEvents() { [native code]} 継承 型:function routeEvent function routeEvent() { [native code]} 継承 型:function enableExternalCapture function enableExternalCapture() { [native code]} 継承 型:function disableExternalCapture function disableExternalCapture() { [native code]} 継承 型:function open function open() { [native code]} 継承 型:function openDialog function openDialog() { [native code]} 継承 型:object frames [object Window] 継承 型:object onabort 継承 型:object onblur 継承 型:object oncanplay 継承 型:object oncanplaythrough 継承 型:object onchange 継承 型:object onclick 継承 型:object oncontextmenu 継承 型:object ondblclick 継承 型:object ondrag 継承 型:object ondragend 継承 型:object ondragenter 継承 型:object ondragleave 継承 型:object ondragover 継承 型:object ondragstart 継承 型:object ondrop 継承 型:object ondurationchange 継承 型:object onemptied 継承 型:object onended 継承 型:object onerror 継承 型:object onfocus 継承 型:object oninput 継承 型:object oninvalid 継承 型:object onkeydown 継承 型:object onkeypress 継承 型:object onkeyup 継承 型:object onload 継承 型:object onloadeddata 継承 型:object onloadedmetadata 継承 型:object onloadstart 継承 型:object onmousedown 継承 型:object onmousemove 継承 型:object onmouseout 継承 型:object onmouseover 継承 型:object onmouseup 継承 型:object onmozfullscreenchange 継承 型:object onpause 継承 型:object onplay 継承 型:object onplaying 継承 型:object onprogress 継承 型:object onratechange 継承 型:object onreset 継承 型:object onscroll 継承 型:object onseeked 継承 型:object onseeking 継承 型:object onselect 継承 型:object onshow 継承 型:object onstalled 継承 型:object onsubmit 継承 型:object onsuspend 継承 型:object ontimeupdate 継承 型:object onvolumechange 継承 型:object onwaiting 継承 型:object oncopy 継承 型:object oncut 継承 型:object onpaste 継承 型:object onbeforescriptexecute 継承 型:object onafterscriptexecute 継承 型:object mozIndexedDB [object IDBFactory] 継承 型:object performance [object Performance] |
関連記事
コメントを残す