GÜNCELLEME (24 Kasım 2015):
Bu yanıt ilk olarak 2010 yılında (SIX yıl önce) yayınlanmıştır, bu yüzden lütfen bu anlayışlı yorumları not edin:
ORİJİNAL CEVAP:
Bunun bir yıllık bir soru olduğunu biliyorum ... ama buna da ihtiyacım var ve çapraz tarayıcı çalışması için buna ihtiyacım var ... herkesin cevaplarını ve yorumlarını birleştirerek biraz basitleştirelim:
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
- Alt dize oluşturmaz
indexOf
En hızlı sonuçlar için yerel işlevi kullanır
- İleri
indexOf
atlamak için ikinci parametresini kullanarak gereksiz karşılaştırmaları atlayın
- Internet Explorer'da çalışır
- NO Regex komplikasyonları
Ayrıca, yerel veri yapısının prototiplerinde bir şeyler doldurmaktan hoşlanmıyorsanız, işte bağımsız bir sürüm:
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
EDIT: @hamish tarafından belirtildiği gibi, güvenli tarafta hata yapmak ve bir uygulamanın zaten sağlanmış olup olmadığını kontrol etmek istiyorsanız, şöyle bir typeof
kontrol ekleyebilirsiniz :
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}