![](/img/trans.png)
[英]jQuery Post blob object gives Uncaught TypeError: Illegal invocation
[英]Illegal invocation on spy object
我正在尝试创建一个Spy
对象,该对象将监视在另一个对象上调用一个方法的次数。 我可以通过将目标的方法包装在Spy
来使监视工作,但是当我尝试调用目标的方法时,出现了Illegal invocation
错误,我不确定为什么。
function Spy(target, method) {
var counter = 0;
var oldFunc = target[method];
target[method] = function(args){
return (function(){
counter++;
oldFunc(args); //ILLEGAL
})();
}
return { count : counter }
}
var spy = Spy(console, 'error');
console.error('foo', 'bar');
console.error('foobar');
console.log(spy.count);
函数调用的主要问题是:
this
值 使用apply
方法解决此问题。 顺便说一句,IEFE是没有用的,您不是在更新.count
属性,而是在更新本地counter
变量。
function Spy(target, method) {
var counter = 0;
var oldFunc = target[method];
target[method] = function() {
counter++;
return oldFunc.apply(this, arguments);
};
return { get count() { return counter; } }
}
( 更新的演示 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.