JS能力測評25:二次封裝函式
阿新 • • 發佈:2019-01-13
思路:
partial(sayIt, 'Hello', 'Ellie')('!!!');首先執行partial(sayIt, 'Hello', 'Ellie'),將引數傳入,然後返回函式result與('!!!')組合成result('!!!')執行。於是,可以在result函式裡呼叫fn,因為函式的引數固定為三個,因此可以用call方法去呼叫函式fn。
function partial(fn, str1, str2) { var result=function(str3){ return fn.call(this,str1,str2,str3); } return result; }
// apply(這裡只是為了對照)
function partial(fn, str1, str2) {
function result(str3) {
return fn.apply(this, [str1, str2, str3]);
}
return result;
}
// bind同上, 多了一步, 把str3傳入的過程寫在另一個函式裡面 function partial(fn, str1, str2) { function result(str3) { return fn.bind(this, str1, str2)(str3); } return result; }