我想編寫一個函數,它將一個函數和一些其他對象作爲參數,並將這些參數作爲函數的默認參數並返回一個新函數。訪問外部調用者函數參數
假設我們有drawRect中(X,Y,X2,Y2)我想寫一個名爲 '部分',以便
(partial(drawRect, 0, 0))(x2, y2);
等於
drawRect(0, 0, x2, y2);
請注意,我的功能想要功能部分靈活,所以它需要任何函數和任意數量的參數。
到目前爲止,我已經寫了這一點:
function temp(a, b, c, d){
document.write(a + b + c + d);
}
function partial(func){
var arr = new Array();
for (var i = 0; i<arguments.length; i++){
arr.push(arguments[i+1]);
}
var tf = function(){f.apply(this, arr.concat(func.arguments))}
console.log(2);
return tf;
}
var ff = partial(temp, 44, 55);
ff(20, 30);
,但文件上寫了一個「男」。我需要在調用時訪問函數'ff'參數,但我不知道如何去做。 你們能幫我解決這個問題嗎?
這就是所謂的做[柯里(http://javascript.crockford.com/www_svendtofte_com/code/curried_javascript/index.html)。 – Mathletics
它好像* currying,但嚴格來說它不同,因爲JavaScript不是懶惰評估語言。 (我不是100%確定誰負責術語;我瞭解其中的差異,但我不知道誰在乎這個術語是如何使用的:) – Pointy