| 'use strict'; |
| var $ = require('../internals/export'); |
| var toLength = require('../internals/to-length'); |
| var notARegExp = require('../internals/not-a-regexp'); |
| var requireObjectCoercible = require('../internals/require-object-coercible'); |
| var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); |
| |
| var nativeStartsWith = ''.startsWith; |
| var min = Math.min; |
| |
| // `String.prototype.startsWith` method |
| // https://tc39.github.io/ecma262/#sec-string.prototype.startswith |
| $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, { |
| startsWith: function startsWith(searchString /* , position = 0 */) { |
| var that = String(requireObjectCoercible(this)); |
| notARegExp(searchString); |
| var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); |
| var search = String(searchString); |
| return nativeStartsWith |
| ? nativeStartsWith.call(that, search, index) |
| : that.slice(index, index + search.length) === search; |
| } |
| }); |