在學習Javascript的時候,我試着重新聲明函數的apply屬性。至今沒有問題。現在Invoke Function.prototype.apply裏面重新聲明apply(Javascript)
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
,我試圖讓應用做更多的事情,並稱之爲「老」應用(如日誌)。
var old = foo.apply;
foo.apply = function() {
alert("A");
return old(null);
}
alert(foo.apply(null));
我得到
TypeError: Function.prototype.apply was called on [object Window], which is a object and not a function
我試圖
foo.apply = function() {
alert("A");
return arguments.callee[Function.prototype.apply](null);
}
alert(foo.apply(null));
我得到
TypeError: Property 'function apply() { [native code] }' of object function() { alert("A"); return arguments.calleeFunction.prototype.apply; } is not a function
有沒有什麼真正的方法來幫助我嘗試?還是由於Function.prototype.apply是本機代碼而受到一些限制?
它適用於我在鉻... – loxxy 2013-02-25 15:15:37
@Ioxxy哪個版本?我粘貼的輸出來自Chrome的控制檯:/ – 2013-02-25 15:16:49
您的第一個解決方案適用於Chrome(v25)。你使用的是什麼瀏覽器? – 2013-02-25 15:17:25