0

我制作了这段代码来覆盖所有窗口函数并在函数运行后放置一个console.log,但它给了我错误问题是什么?

未捕获的类型错误:没有足够的参数

for (func in window) {
    if (typeof window[func] === 'function' && typeof window[func] != 'undefined') {
        var s = window[func];
        window[func] = function (a) {
            s(a);
            console.log(func);
        }
    }
}

alert("hehe");
4

1 回答 1

1

正如另一张海报提到的那样,问题在于您的变量s每次通过循环都会被覆盖。相反,尝试

function overwrite(f){
    return function(a){
        var ret=f(a);
        console.log(f);
        return ret;
    };
}

for (func in window) {
    if (typeof window[func] === 'function' && typeof window[func] != 'undefined') {
        window[func]=overwrite(window[func]);
    }
}

alert("hehe");
于 2013-05-13T10:35:46.693 回答