在this article,約翰Resig的討論了這個片斷爲討好:困惑Resig的咖喱例子,「論據」對象
Function.prototype.curry = function() {
var fn = this, args = Array.prototype.slice.call(arguments);
return function() {
return fn.apply(this, args.concat(
Array.prototype.slice.call(arguments)));
};
};
我感到困惑的表達Array.prototype.slice.call(arguments)
。
這裏的「論據」是「這個」參數數組的slice()方法,但「切片()」需要一個參數本身,所以我想你需要做類似
Array.prototype.slice.call(arguments, <someIndex>)
。我不明白代碼可以如何工作。根據the docs on "arguments",「參數」實際上不是一個數組,而只是一個像對象這樣的數組。我們如何調用「slice()」?如果我把代碼
console.log(arguments.slice())
我得到一個錯誤,說對象沒有切片方法。
這是怎麼回事?
Resig voodoo,你所有的代碼都屬於John! – adeneo 2013-03-26 20:58:27
@Xander,不,它沒有明確地討論,儘管我認爲片段可能來自原型庫。 – Jonah 2013-03-26 21:15:51