| トップページ |

2008.09.01

MacIE5でArray.pushを実装

このエントリーをはてなブックマークに追加 mixiチェック

MacIE5でArray.pushが必要になったんで、作りました。以下のコードをJavaScriptのコードに入れておくと、Arrayオブジェクトにpushメソッドが追加されます。pushメソッドが既にある場合は、上書きしません。

      // Array.pushをMacIE5に実装
      if (typeof Array.prototype.push != 'function') {
        Array.prototype.push = function (f){
          this[this.length] = f;
        }
      }


使うときは普通に

var x = ['hoge', 'fuga'];
x.push('hage');
alert(x.length); // 3
var s = '';
for (var i = 0; i < x.length; i++ ) {
  s += i + ':' + x[i] + ',';
}
alert(s); // 0:hoge,1:fuga,2:hage,

となります。


作ってから検索してみたら、先人が同じコードを作ってた。よくあることだねー
IE5.5以前ではArray.push()が使えないらしいので - へぼいいいわけ [d.hatena.ne.jp]

あと、同様に昔作ったMacIE5でdecodeURIを実装もご覧ください。

2008.09.01 午後 06:12 [Script] | |

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/42347612

この記事へのトラックバック一覧です: MacIE5でArray.pushを実装:

コメント

Array.prototype.push = function(){
for(var i=0; i this[this.length]=arguments[i]
}
return this.length;
}

とかじゃないとpushの仕様を満たさないかも?

投稿者: otsune (2008/09/02 14:18:23)

Array.prototype.push = function(){
for(var i=0; i < arguments.length; i++){
this[this.length]=arguments[i]
}
return this.length;
}

とかじゃないとpushの仕様を満たさないかも?

投稿者: otsune (2008/09/02 14:19:30)

コメントを書く