UPDATE:20080530最新修改
UPDATE:20081221补充说明::oops: 小弟写这篇东西实在是班门弄斧了,这是当时我刚理解完时就写下的,说的口水多,没什么实例,非但没把问题说清楚也把大家搞糊涂了,实在不好意思。如果想要知道实例,请搜索一下Currying in Javascript 吧,用到Currying的地方,几乎都会出现这种写法。其实这里主要说的不是把参数换成数组,而是更玄妙一点的JS运用。这里见笑了,如果可以,以后会换个更直接明了的书写风格的。
同时更正了一处链接。
关于本文所说明的问题有更简洁的另一个解释方法:什么是Array.prototype.slice.call。
为了研究Currying in Javascript,翻阅了很多外文网站,为的是找一个比较好的Currying方案,找到的比较详细的有如下(文章内部链接可能包含更多的相关文章):
发现大多人都用了Array.prototype.slice.call(argments,0),一直不明白这句是干什么的。而昨天温习了slice()方法,再参考Function.call(thisArg[, arg1[, arg2[, ...]]]),还是不得而知(我脑筋转得慢:|)。上网查,第一时间查老外的Google.com in English也没解释,真到查找“Array.prototype.slice 用法”时,才得到数篇。虽然我很鄙视搞收集的人,搞得互联网文章像是天下一大抄似的,但现在却恨少,只得三篇(一模一样的三篇,责任编辑为admin或者超级管理员,作者是佚名。)
下面就我的理解,对Array.prototype.slice.call进行解说,菜鸟留下,大虾吐口水:
Update: 下面写的可能有点难懂,怕刚接触Javascript的人可能会看不懂,请大家看完后留个言,谢谢!
Array.prototype.slice.call(thisArg[, arg1[, arg2[, ...]]])
成员介绍:
Array [object]
Array对象(即数组对象)
prototype [property]
Javascript的原型,此prototype非Prototype.js,可以暂且理解为Java中的静态属性/方法。总之这个不好说,详细请看JavaScript中的prototype(原型)属性研究。
slice [Function]
call [Function]
神奇的方法,该方法是所有Function对象里的方法,所以slice就有这样一个方法。用于把Function对象里的this替换为目标对象。看这里。
串起来就是: 阅读全文(Read the rest of this entry) »
Popularity: 96% [?]
文章字体大小:

tags: