2016-03-19 27 views
1

Bir dize tüm büyük harf olup olmadığını denetlemek için bir dize prototip yazmaya çalışıyorum. Şimdiye kadar sahip olduğum şey bu ve neden çalışmadığından emin değilim.prototip yazma

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

bunun böyle çalışmak istiyorum:

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

cevap

2

Prototip yöntemi, örneğin kodunuzun beklediği gibi ilk bağımsız değişkeni değil, this örneğini alır. Bu deneyin:

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

String(this) çağrı this temel dize değil === operatörü ile eşit olarak kabul olmaz bir dize nesne, olduğundan emin kılar.

1

(Herhangi argümanlar geçmemiş olarak her üç durumda da undefined) İlk argüman test ediyoruz ve dize kendisi (ki this, string olacaktır).

+0

Bu mantıklı, bunu temizlediğiniz için teşekkür ederim! – JuniorSauce