2017-08-13 36 views
0

我试图在Chrome中克隆函数indexedDB.cmp,然后用新函数替换indexedDB.cmp。新函数使用console.log记录传递的参数,然后使用apply调用克隆的函数。但是,当我使用apply时,我总是收到错误“非法调用”。我只需要在Google Chrome上工作即可。任何帮助,将不胜感激!Javascript - 在克隆的本地函数上调用“apply”时出错

function init() { 
    var i = indexedDB; 
    i.cmp2 = i.cmp.bind({}); 
    i.cmp = function(...a) { 
     console.log("CMP call!",a); 
     return i.cmp2.apply(null,a); 
    }; 
} 
init(); 
indexedDB.cmp("/testFolder",3); 
+0

既然你已经在使用扩展语法,为什么不用apply来调用函数呢? –

+0

谢谢!我将'i.cmp.bind({})'改为'i.cmp.bind(i)',尝试了你的建议,并且它工作正常! –

回答

0

“既然你已经在使用传播语法,为何不调用与传播,而不是应用功能 - 的Mikael Lennholm”

我也改变i.cmp.bind({})i.cmp.bind(i)