2016-03-19 3 views
1

Ich versuche, einen String-Prototyp zu schreiben, der prüfen würde, ob eine Zeichenkette nur aus Großbuchstaben besteht oder nicht. Das habe ich bisher und ich bin mir nicht sicher, warum das nicht funktioniert.Schreiben des Prototyps, um zu überprüfen, ob der String ein Großbuchstabe ist

String.prototype.isUpperCase = function(string) { 
    if(string === string.toUpperCase()) { 
    return true; 
    }else{ 
    return false; 
} 
} 

Ich mag es, wie dies funktioniert:

'hello'.isUpperCase() //false 
'Hello'.isUpperCase() //false 
'HELLO'.isUpperCase() //true 

Antwort

2

Die Prototyp-Methode empfängt die Instanz in this, nicht das erste Argument, wie Ihr Code zu erwarten scheint. Versuchen Sie folgendes:

String.prototype.isUpperCase = function() { 
    return String(this) === this.toUpperCase(); 
} 

Der String(this) Aufruf stellt sicher, dass this ist ein String primitiv und kein String-Objekt, das als gleich mit dem === Betreiber nicht erkannt werden würde.

1

Sie testen das erste Argument (undefined in allen drei Fällen, wie Sie keine Argumente übergeben haben) und nicht die Zeichenfolge selbst (das wäre this, nicht string).

+0

Okay, das macht Sinn, danke, dass du das geklärt hast! – JuniorSauce