| '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 nativeEndsWith = ''.endsWith; |
| var min = Math.min; |
| |
| // `String.prototype.endsWith` method |
| // https://tc39.github.io/ecma262/#sec-string.prototype.endswith |
| $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('endsWith') }, { |
| endsWith: function endsWith(searchString /* , endPosition = @length */) { |
| var that = String(requireObjectCoercible(this)); |
| notARegExp(searchString); |
| var endPosition = arguments.length > 1 ? arguments[1] : undefined; |
| var len = toLength(that.length); |
| var end = endPosition === undefined ? len : min(toLength(endPosition), len); |
| var search = String(searchString); |
| return nativeEndsWith |
| ? nativeEndsWith.call(that, search, end) |
| : that.slice(end - search.length, end) === search; |
| } |
| }); |