[問題] javascript 的 call

看板Ajax作者 (月河)時間11年前 (2013/03/01 13:30), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
最近在學習 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
因為 call 是 function, 所以也具有 call prototype method
03/01 13:51, 1F

03/01 13:51, , 2F
這是一種 circle reference
03/01 13:51, 2F

03/01 19:06, , 3F
我在這篇弄懂了 http://ppt.cc/PM2s 也謝謝樓上大大
03/01 19:06, 3F
文章代碼(AID): #1HC3pr4K (Ajax)