2015-06-11 55 views
0

我想修改console.log,以便使用console.log保存應用程序輸出到命令行的所有內容。修改console.log

我已經試過

var log = console.log; 

console.log = function() { 
    // fs.appendFile('log.txt .. 
    log.apply(log, arguments); 
} 

但它給我的錯誤

Illegal invocation 

回答

2

第一個參數apply是什麼this將引用。爲了模擬一個電話console.log(),你必須通過console,而不是函數本身:

log.apply(console, arguments); 
// log.apply(this, arguments); would work as well 
+0

特別是因爲'console.log'有需要'console'特殊情況下的規則是它的'this'當它運行。 – ssube

+0

爲什麼我不能只寫'console.log'而不是'log'?不是'log'對'console.log'的引用嗎? –

+0

@ afonso-bot:'console.log'會引用你的新方法,所以你將有一個沒有終止條件的遞歸函數。 –