ATUALIZAÇÃO (24 de novembro de 2015):
Esta resposta foi originalmente publicada no ano de 2010 (SIX anos atrás). Portanto, observe estes comentários perspicazes:
RESPOSTA ORIGINAL:
Sei que essa é uma pergunta de um ano ... mas eu também preciso disso e preciso que ela funcione em vários navegadores ... combinando a resposta e os comentários de todos e simplificando um pouco:
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
- Não cria uma substring
- Usa a
indexOf
função nativa para obter resultados mais rápidos
- Ignore comparações desnecessárias usando o segundo parâmetro de
indexOf
para avançar
- Funciona no Internet Explorer
- Sem complicações no Regex
Além disso, se você não gosta de colocar coisas nos protótipos da estrutura de dados nativa, aqui está uma versão autônoma:
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
EDIT: Como observado por @hamish nos comentários, se você quiser errar do lado seguro e verificar se uma implementação já foi fornecida, basta adicionar uma typeof
verificação da seguinte forma:
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}