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

相关问题