2016-03-19 11 views
1

文字列がすべて大文字かどうかを確認する文字列プロトタイプを作成しようとしています。これは私がこれまで持っていたもので、なぜこれがうまくいかないのか分かりません。文字列が大文字かどうかを調べるプロトタイプを書く

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

私はそれがこのように仕事をしたい:

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

答えて

2

プロトタイプメソッドは、thisのインスタンスを受け取ります。コードが期待しているように、最初の引数ではありません。これを試してみてください:

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

String(this)呼び出しがthisがプリミティブ文字列ではなく===演算子と同じように認識されない文字列オブジェクトであることを確認します。

1

あなたは文字列自体(あなたが任意の引数が渡されていないとして、3つのすべてのケースでundefined)最初の引数をテストしていません( ではなく、thisとなります)。

+0

これをクリアしていただきありがとうございます。 – JuniorSauce

関連する問題