Function::apply and call

JSのapplyってずっとよくわかってなかったので調べてみた。
schemeの(apply )と同じようなもんと考えて納得。

あるオブジェクトの関数を別のオブジェクトに適用する。

"hoge".slice()
//=> "hoge"

[].slice.apply("hoge")
// => ["h", "o", "g", "e"]

似たメソッドでcallがあるが、引数の取り方が異なる。

Array.prototype.slice.apply("hoge", [3,4])

Array.prototype.slice.call("hoge", 3, 4)

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call