Różnica między plasterkiem Array.slice i Array ()

Przechodzę przez znakomity John ResigZaawansowany samouczek JavaScript i nie do końca rozumiem, jaka jest różnica między następującymi wywołaniami: (proszę zauważyć, że 'arguments' jest wbudowanym słowem javascript i nie jest dokładnie tablicą stąd hakowanie za pomocą Array.slice zamiast zwykłego wywoływania arguments.slice)

>>> arguments  
[3, 1, 2, 3]  
>>> Array.slice.call( arguments )  
3,1,2,3 0=3 1=1 2=2 3=3  
>>> Array.slice.call( arguments, 1 )  
[]
>>> Array().slice.call( arguments )  
3,1,2,3 0=3 1=1 2=2 3=3  
>>> Array().slice.call( arguments, 1 )  
1,2,3 0=1 1=2 2=3  

Zasadniczo moje nieporozumienie sprowadza się do różnicy między plasterkiem Array.slice i Array (). Czym dokładnie jest różnica między tymi dwoma i dlaczego Array.slice.call nie zachowuje się zgodnie z oczekiwaniami? (który zwraca wszystkie oprócz pierwszego elementu listy argumentów).

questionAnswers(6)

yourAnswerToTheQuestion