2017-07-28 45 views
0

有沒有一種方法來實現可以攔截箭頭函數的記錄器函數,就像下面的示例一樣?我如何爲javascript箭頭函數創建記錄器?

原代碼:

const arrowFunctionExample = (value)=> { 
    console.log('arrowFunctionExample',value) 
} 

function main(){ 
    arrowFunctionExample('testing') 
} 

新代碼:

const arrowFunctionExample = (value)=> { 
    console.log('arrowFunctionExample',value) 
} 

function main(){ 
    logger(arrowFunctionExample('testing')) 
} 

//something like this 
const logger = (fn) => { 
    console.log('logger',fn) 
    if(typeof fn === 'function'){ 
     fn(value) 
    } 
} 

我想獲得相同的效果時,主要執行在這兩種情況下,無需編輯箭頭功能。

+2

據我所知,'常量的main()'是不是你聲明'main'功能。 – lilezek

+0

'value'在您的'logger'中是未定義的 – Bergi

+0

如果您想在使用或不使用記錄器功能時獲得相同的效果,那麼爲什麼要添加它? *你想從記錄器功能獲得什麼效果? – Bergi

回答

1

這就是你想要的嗎?

function logger(fn){ 
 
    return function(){ 
 
     console.log("log:", fn.name, arguments); 
 
     return fn.apply(this, arguments); 
 
    } 
 
} 
 

 
const arrowFunctionExample = (value)=> { 
 
    console.log("do something with", value); 
 
}; 
 

 
function main(){ 
 
    logger(arrowFunctionExample)('testing') 
 
} 
 

 
main();