console.log
pobiera nieokreśloną liczbę argumentów i zrzuca ich zawartość w jednym wierszu.Przekazywanie argumentów do pliku console.log jako argumentów pierwszej klasy za pośrednictwem funkcji proxy
Czy istnieje sposób, aby napisać funkcję, która przekazuje argumenty przekazywane bezpośrednio do console.log
w celu zachowania tego zachowania? Na przykład:
function log(){
if(console){
/* code here */
}
}
To nie byłoby takie samo jak:
function log(){
if(console){
console.log(arguments);
}
}
Od arguments
jest tablicą i console.log
zrzuci zawartość tej tablicy. Nie będzie to samo, co:
function log(){
if(console){
for(i=0;i<arguments.length;console.log(arguments[i]),i++);
}
}
Ponieważ to spowoduje wydrukowanie wszystkiego w różnych wierszach. Chodzi o zachowanie zachowania console.log
, ale poprzez funkcję proxy log
.
+ ---
Szukałem rozwiązania mógłbym zastosować do wszystkich funkcji w przyszłości (utworzyć proxy dla funkcji prowadzącego obsługę argumentów nienaruszone). Jeśli jednak nie da się tego zrobić, przyjmuję konkretną odpowiedź: console.log
.
To nie działa w Chrome/Safari. Zgłasza błąd "Nielegalne wywołanie". – aditya
@aditya, zaktualizowany kod .. nie używałem poprawnego kontekstu .. musisz przekazać 'console' jako argument 'this' do zastosowania .. –
Awesome. To się udało. Dzięki! – aditya