作者mRiver (月河)
看板Ajax
标题[问题] javascript 的 call
时间Fri Mar 1 13:30:27 2013
最近在学习 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
1F:→ TonyQ:因为 call 是 function, 所以也具有 call prototype method 03/01 13:51
2F:→ TonyQ:这是一种 circle reference 03/01 13:51