在学习 Javascript 时,我尝试重新声明一个函数的 apply 属性。到目前为止没有问题。
function foo() { return 1; }
alert(foo()); // 1
alert(foo.apply(null)); // 1
foo.apply = function () { return 2; }
alert(foo()); // 1
alert(foo.apply(null)); // 2
现在,我试图让 apply 做更多的事情并调用“旧”应用(如日志记录)。
var old = foo.apply;
foo.apply = function() {
alert("A");
return old(null);
}
alert(foo.apply(null));
我明白了
TypeError: Function.prototype.apply 在 [object Window] 上被调用,这是一个对象而不是函数
我试过
foo.apply = function() {
alert("A");
return arguments.callee[Function.prototype.apply](null);
}
alert(foo.apply(null));
我明白了
TypeError: 对象函数 () { alert("A"); 的属性 'function apply() { [native code] }' 返回 arguments.calleeFunction.prototype.apply;} 不是函数
有什么真正的方法可以帮助我尝试什么?还是由于 Function.prototype.apply 是本机代码而受到一些限制?