[問題] javascript 的 call
最近在學習 javascript 看到 function & method 那邊
用 Function.prototype.call 可以指定函數 this 物件
可以這樣:
[1,2,3].slice(); //[1,2,3]
[1,2,3].slice.call([4,5,6]); //[4,5,6]
還可以把 slice 從物件風格變成函數風格:
var slice = Function.prototype.call.bind(Array.prototype.slice);
slice([1,2,3], 0, 3);
發現 call 很厲害、很神奇,但搞不懂 Function.prototype.call 如何運作
亂完一通發現:
function max(x, y) { return (x > y) ? x : y }
Function.prototype.call.bind(max)(1,2) //undefined
Function.prototype.call.bind(max)(1,2,3) //3
Function.prototype.call.(max,1,2,3) //undefined
Function.prototype.call.call(max,1,2,3) //3
Function.prototype.call.call.call(max,1,2,3) //3
Function.prototype.call.call.call.call(max,1,2,3) //3
....
接下來不管 call 幾次結果都一樣!! 請問有人了解怎麼回事嗎? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.7.219
→
03/01 13:51, , 1F
03/01 13:51, 1F
→
03/01 13:51, , 2F
03/01 13:51, 2F
→
03/01 19:06, , 3F
03/01 19:06, 3F