8
如果參數只是一個具有length屬性的對象,那麼爲什麼它看起來與其他非數組對象相比,例如Array.prototype.slice的行爲不同。鑑於「參數」不是一個真正的數組,爲什麼Array.prototype.slice.call(參數)工作,但Array.prototype.slice.call(someobject)不起作用?
例如,以下代碼首先警告「未定義」,然後警告「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");