ECMAScript の仕様は良く解りませんが、ちょっと調べてみても グローバルな変数は、 window の名前空間で参照されますが、列挙できません。 だったら最初から window に登録すればいいのですが、他とのつりあい上少し注意 する必要があります。
window.myData = "123"; window.isDate = function (str) { if ( str == "" ) { return true; } if ( !str.match(/^\d{4}\/[\d]+\/[\d]+$/) ) { return false; } var parts = str.split( "/" ); var nYear = Number(parts[0]); var nMonth = Number(parts[1]) - 1; var nDay = Number(parts[2]); // 月,日の妥当性チェック if ( 0 <= nMonth && nMonth <= 11 && 1 <= nDay && nDay <= 31 ) { var dt = new Date(nYear, nMonth, nDay); if( isNaN(dt) ) { return false; } else if( dt.getFullYear() == nYear && dt.getMonth() == nMonth && dt.getDate() == nDay ) { return true; } else{ return false; } } else{ return false; } }; String.prototype.isDate = function () { var str = this.valueOf(); if ( str == "" ) { return true; } if ( !str.match(/^\d{4}\/[\d]+\/[\d]+$/) ) { return false; } var parts = str.split( "/" ); var nYear = Number(parts[0]); var nMonth = Number(parts[1]) - 1; var nDay = Number(parts[2]); // 月,日の妥当性チェック if ( 0 <= nMonth && nMonth <= 11 && 1 <= nDay && nDay <= 31 ) { var dt = new Date(nYear, nMonth, nDay); if( isNaN(dt) ) { return false; } else if( dt.getFullYear() == nYear && dt.getMonth() == nMonth && dt.getDate() == nDay ) { return true; } else{ return false; } } else{ return false; } };
window はそもそも、JavaScript のプラットホームですから特殊です。 prototype を使うとIEではエラーは出無いのですが、なんかおかしくなります。 IE 以外ではエラーですし。 String は、JavaScript のオブジェクトなので、普通に prototype 経由で登録します。 何れも、for( a in window )、for( a in String.prototype ) で参照可能です関連する記事
prototype.js で、$(id) 関数が name 属性のみの場合 IE 以外で使え無いのを
とりあえず使えるようにする