sugar
Version:
A Javascript utility library for working with native objects.
35 lines (29 loc) • 1.09 kB
JavaScript
;
var Sugar = require('sugar-core'),
mathAliases = require('../../common/var/mathAliases'),
getCoercedSearchString = require('../../es6/internal/getCoercedSearchString'),
getCoercedStringSubject = require('../../es6/internal/getCoercedStringSubject');
var min = mathAliases.min,
max = mathAliases.max;
Sugar.String.defineInstancePolyfill({
'startsWith': function(searchString) {
// Force compiler to respect argument length.
var argLen = arguments.length, position = arguments[1];
var str, start, pos, len, searchLength;
str = getCoercedStringSubject(this);
searchString = getCoercedSearchString(searchString);
pos = +position || 0;
len = str.length;
start = min(max(pos, 0), len);
searchLength = searchString.length;
if (searchLength + start > len) {
return false;
}
if (str.substr(start, searchLength) === searchString) {
return true;
}
return false;
}
});
// This package does not export anything as it is mapping a
// polyfill to String.prototype which cannot be called statically.