1. 程式人生 > >JS能力測評25:二次封裝函式

JS能力測評25:二次封裝函式

思路:

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;
}