• ベストアンサー

ビルドインクラスにメソッドを追加したい

たとえばこんなふうに、既存のBuild-Inクラスに、独自のメソッドを追加したいのですが・・ Array.prototype.get1 = function () {   // とくに意味なしなメソッド   return this[1] ; } ネスケ・Mozilla系やOperaはこれでうまくいくのですが、 IEだけまったく動作しません。 IEで、既存のビルドインクラスにメソッドを追加する方法って、ありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Hasty
  • ベストアンサー率73% (19/26)
回答No.3

documentオブジェクトへのメソッドの追加方法は、補足に書かれているのでOKだと思います。 IEだとDocumentというクラス(関数)自体がないようなので、メソッドとしてではなく、documentオブジェクトを引数に取る関数として定義するしかないかも知れませんね。

その他の回答 (2)

  • Hasty
  • ベストアンサー率73% (19/26)
回答No.2

IEだとDocumentクラスってのがないみたいだから、直接documentオブジェクトにメソッド追加したらどうでしょう?これならIEでもFirefoxでもOKみたいですよ。

noname#43437
質問者

補足

アドバイスありがとうございます。 たとえば、こんなふうに・・でしょうか? document.myTest = function() {  alert( "myTest" ) ; } 動作はしましたが・・よそのframeのdocumentなどでは、 インスタンスが違うので使えなくなってしまいますね。。 IEの実装は、Documentというクラスが、曖昧なんでしょうか。。。

  • Hasty
  • ベストアンサー率73% (19/26)
回答No.1

手元で確認したけど、問題なく動きましたよ。(WinXP IE6-SP2) Array.prototype.get1 = function () {   return this[1] ; } var aaa = new Array(1,2,3); alert(aaa.get1()); 結果:2

noname#43437
質問者

補足

ごめんなさい。複合的な問題だったようです。 Array.get1の他に、 Document.prototype.myTest = function () { alert( "myTest" ) ; } これを定義していました。 IE以外では、document.myTest() で呼び出せるのですが、 IEでは、これが定義してあると、Array.get1も機能しなくなってしまいます。 そもそもは、Documentクラスにメソッドを追加したいのですが・・

関連するQ&A