2016-06-24 50 views
0

我想製作一個包裝函數來將一些常用配置參數應用於不同的函數,但我不知道如何將var config添加到fn函數中。這是我到目前爲止的代碼:將公共配置傳遞給另一個函數的包裝函數

function addConfig(val, fn) { 
 
    var config = { value: val }; 
 
    
 
    return function() { 
 
    var args = Array.prototype.slice.call(arguments); 
 
    args.push(config); 
 
    return fn.apply(this, args) 
 
    } 
 
} 
 

 
function test(id, name, config) { 
 
    console.log(arguments); 
 
} 
 

 
addConfig('a', test(1, 'bill')); // Does not log out config object

回答

1

你的括號是錯誤的。你必須調用由addConfig代替test返回的功能:

function addConfig(val, fn) { 
 
    var config = { value: val }; 
 
    return function() { 
 
    var args = Array.prototype.slice.call(arguments); 
 
    args.push(config); 
 
    return fn.apply(this, args) 
 
    } 
 
} 
 

 
function test(id, name, config) { 
 
    console.log(arguments); 
 
} 
 

 
addConfig('a', test)(1, 'bill');

相關問題