2013-05-13 2 views
0

Я сделал этот код, чтобы перекрыть все функции окна и поставить console.log после запуска функции, но он дает мне ошибку, что такое проблема?Uncaught TypeError: Недостаточно аргументов

Uncaught TypeError: Не хватает аргументов

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"); 
+1

http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – DCoder

ответ

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"); 
Смежные вопросы