Основываясь на ответах, приведенных здесь, это версия, которую я сейчас использую, так как она, кажется, дает лучшую производительность на основе тестирования JSPerf (и насколько я могу судить функционально завершена).
if(typeof String.prototype.startsWith != 'function'){
String.prototype.startsWith = function(str){
if(str == null) return false;
var i = str.length;
if(this.length < i) return false;
for(--i; (i >= 0) && (this[i] === str[i]); --i) continue;
return i < 0;
}
}
Это было основано на startWith2 отсюда: http://jsperf.com/startswith2/6. Я добавил небольшой твик для небольшого улучшения производительности, и с тех пор также добавил проверку на то, что строка сравнения является нулевой или неопределенной, и преобразовал ее, чтобы добавить в Струнный прототип с использованием методики в ответе CMS.
Обратите внимание, что эта реализация не поддерживает параметр "position", который упоминается на этой странице Mozilla Developer Network , но в любом случае он не является частью предложения ECMAScript.