Apabila beroperasi pada jenis String, startsWith(anotherString) dan endsWith(anotherString) adalah kaedah yang sangat berguna. Antaranya, startsWith menentukan sama ada rentetan semasa bermula dengan anotherString, dan endsWith menentukan sama ada rentetan itu berakhir. Contoh:
"abcd".startsWith("ab"); // true "abcd".startsWith("bc"); // false "abcd".endsWith("cd"); // true "abcd".endsWith("e"); // false "a".startsWith("a"); // true "a".endsWith("a"); // true
Malangnya, Javascript tidak disertakan dengan dua kaedah ini, jadi anda hanya boleh menulisnya sendiri jika perlu. Sudah tentu ia tidak sukar untuk menulis.
if (typeof String.prototype.startsWith != 'function') { String.prototype.startsWith = function (prefix){ return this.slice(0, prefix.length) === prefix; }; }
String.slice() adalah serupa dengan String.substring() kerana kedua-duanya memperoleh substring, tetapi sesetengah ulasan mengatakan slice itu lebih cekap. Sebab mengapa indexOf() tidak digunakan di sini ialah indexOf akan mengimbas keseluruhan rentetan Jika rentetan itu sangat panjang, kecekapan indexOf akan menjadi sangat lemah.
if (typeof String.prototype.endsWith != 'function') { String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1; }; }
Tidak seperti startsWith, indexOf boleh digunakan dalam endsWith. Sebabnya ialah ia hanya mengimbas rentetan terakhir, dan kelebihan ke atas slice ialah ia tidak perlu menyalin rentetan, hanya mengimbasnya terus, jadi ia lebih cekap.