2016-03-19 122 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

您正在測試的第一個參數(在所有三種情況下undefined因爲你沒有通過任何參數),而不是字符串本身(這將是this,而不是string)。

+0

好的,很有道理謝謝你清理那個! – JuniorSauce

相關問題