IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

arguments を直接的に配列化

Own Properties は同じだからプロトタイプだけ入れ替える (Firefox Only)

id:cheesepie:20070129:1170012588 を見ていて思いつきました。

arguments.__proto__ = Array.prototype;

ちなみにクロスブラウザなやり方 3 つ

// 1
for(var i = 0, args = []; i < arguments.length; i ++) args[i] = arguments[i];

// 2
arguments = Array.apply(null, arguments); // 注意: コメント欄参照

// 3
for(var n in Array.prototype) arguments[n] = Array.prototype[n];

別に配列化しなくても配列の関数は使えます

配列のプロトタイプを使う

Array.prototype.shift.apply(arguments); // 最初の引数を抜き出す