Если arguments - это просто объект со свойством length, то почему он, кажется, ведет себя иначе, чем другие объекты, не являющиеся массивами, в отношении, скажем, Array. prototype.slice.
Например, следующий код сначала предупреждает «undefined», а затем предупреждает «foo». Почему они различаются?
(function(a){
var myobj = {0 : "foo"};
var myobjarray = Array.prototype.slice.call(myobj);
var argumentsarray = Array.prototype.slice.call(arguments);
alert(myobjarray.shift());
alert(argumentsarray.shift());
})("foo");