Array.prototype.slice exists, and Array.slice doesn't exist.
When you create an object (which an array is), such as with:
var tempArray = [1, 2, 3];
the prototype of the tempArray points to the Array object.
If you asked for something that doesn't exist, such as tempArray.foobar(), tempArray, Array, and Object are all checked for the foobar method, and when it cannot find it you're told that it's undefined.