How are arguments a legit argument to Array.slice?



In the code sample below, how are arguments a legitimate
argument to Array.slice?


Function.prototype.bind = function(){
var fn = this, args = Array.prototype.slice.call(arguments), object =
args.shift();
return function(){
return fn.apply(object,
args.concat(Array.prototype.slice.call(arguments)));
};
};
var myObject = {};
function myFunction(){
return this == myObject;
}

myFunction.bind(myObject)();
.