Warum toString () verwenden, um Prüfargumente zu schreiben, die Sie mit typeof überprüfen können?

8

Ich verstehe, warum Sie Object.prototype.toString() oder String() für Tychecking-Arrays verwenden müssen, aber nicht typeof ausreichend für Tychecking-Funktionen und Strings? Zum Beispiel verwendet das Polyfill auf MDN für Array.isArray :

%Vor%

Bei Arrays ist das ziemlich klar, weil Sie typeof nicht verwenden können, um nach Arrays zu suchen. Valentine verwendet instanceof dafür:

%Vor%

Aber für Strings / Funktionen / booleans / Zahlen, warum nicht typeof ?

verwenden

jQuery und Underscore verwenden beide etwas, um nach Funktionen zu suchen:

%Vor%

Ist das nicht gleichbedeutend damit?

%Vor%

oder gar das?

%Vor%     
ryanve 01.03.2012, 08:10
quelle

2 Antworten

15

Ok Ich denke, ich habe herausgefunden, warum Sie% code% verwenden. Bedenken Sie Folgendes:

%Vor%

    
ryanve 18.05.2012, 16:33
quelle
1

Der erste Grund, den ich mir vorstellen kann, ist, dass typeof null object zurückgibt, was normalerweise nicht gewünscht ist (da null kein Objekt ist, sondern ein eigener Typ).

Jedoch gibt Object.prototype.toString.call(null) [object Null] zurück.

Aber wie Sie vorschlagen, wenn Sie erwarten, dass etwas ein String oder ein anderer Typ ist, der mit typeof gut funktioniert, sehe ich keinen Grund, warum Sie typeof nicht verwenden können (und ich verwende regelmäßig typeof in diesem Fall).

Ein anderer Grund, warum Bibliotheken wie die von Ihnen erwähnten die gewählte Methode verwenden, ist möglicherweise nur die Konsistenz. Sie können typeof verwenden, um nach einem Array zu suchen, verwenden Sie also eine andere Methode und bleiben Sie dabei immer dabei.

Für weitere Informationen, Angus Croll hat einen ausgezeichneten Artikel über die typeof operator .

    
James Allardice 01.03.2012 08:15
quelle

Tags und Links