なんでこれでリストが返るのか

たまに見る↓の書き方。

function get_list(){
console.log(Array.prototype.slice.call(arguments));
}

get_list(1,2,3,4);//[1,2,3,4]

これが何を意味してるのかわからない。。。
なんでprototypeプロパティを使ってsliceメソッドをわざと追加してるんだろうか。
sliceメソッドをオブジェクトとして扱って、
argumentsにあるプロパティもまとめて渡してるってことか。

argumentsとArray.prototype.slice.call

↑を見たらなんとなくわかった気がする。
ようは引数を配列として扱うためにprototypeプロパティを使ってるってことになるのかな。

function get_list2(){
console.log(Array.prototype.splice.call(arguments,0,arguments.length));
}

get_list2(1,2,3,4);//[1,2,3,4]

それなら↑な書き方もできる。
でもいまいちわからない!