JavaScript-Testfunktion [duplizieren]

8

In diesem Artikel habe ich folgendes gefunden:

%Vor%

Ich habe mir das angesehen und ich konnte nicht herausfinden, wie das xyz zum Aufrufer ging. Also habe ich einen ähnlichen Test in der Konsole gemacht:

%Vor%

es scheint, dass die Funktion .test() das Argument in string konvertiert und dann den Test ausführt. also warum /xyz/.test(function(){xyz;}) verwendet anstatt /xyz/.test('xyz') ?

    
Gergely Fehérvári 14.12.2011, 11:12
quelle

2 Antworten

5

Es testet effektiv Folgendes:

(function(){xyz;}).toString()

gibt erkennbaren JavaScript-Quellcode zurück:

"(function(){xyz;})"

im Gegensatz zu etwas Funky, das einige Implementierungen zurückgeben können.

Er verwendet .test , um die Funktion in eine Zeichenkette umzuwandeln, und verifiziert dann, dass ein internes Token ( xyz ) im Ergebnis sichtbar ist.

    
Alex K. 14.12.2011, 11:22
quelle
0

Ich habe den ganzen Artikel nicht gelesen, aber das scheint eine Art Browser- / Feature-Sniffing zu sein.

John überprüft, ob das anonyme function(){xyz;} tatsächlich in die Zeichenfolge "function(){xyz;}" konvertiert wird. Es gibt wahrscheinlich Browser, die es in etwas anderes konvertieren, und das ist, was er überprüft.

Aber das scheint mir ein bisschen Voodoo zu sein ...

    
RoToRa 14.12.2011 11:23
quelle

Tags und Links