5

我在这里写了一些书签,我有一些与内置 javascript 函数相关的问题。

假设我要替换内置提示功能(不一定在书签中)。这似乎很容易,但是有没有办法从这个替换中调用内置提示函数?

prompt = function(message){
    var tmp = prompt(message);
    hook(tmp);
    return tmp;
}

我无法正确确定范围。这个例子产生无限递归。

还有一种方法可以恢复已被替换的内置 javascript 函数的默认行为(无需挂在额外的参考上)。

4

1 回答 1

6
(function () {
    var old_prompt = prompt;
    prompt = function (msg) {
        var tmp = old_prompt(msg);
        hook(tmp);
        return tmp;
    };
    prompt.restore = function () { prompt = old_prompt; }
    // analogous for other functions you want to replace
})();

将其包装在(自动执行)函数中可确保old_prompt不会泄漏到外部。你确实需要暴露一些东西。我选择提供一个功能来进行恢复,为了方便,也许可以说是面向未来和封装。只要高阶函数不要摆弄别人的范围......

另外,不,(我假设)不可能在没有任何引用的情况下恢复变量的先前值(旧值),即使该值恰好是内置的。即使有可能,这也是一个非常晦涩难懂的技巧——这种方法有效,所以让我们坚持下去。

func.restore归功于 Martijn)

于 2011-02-18T18:43:14.383 回答