UNPKG

786 BJavaScriptView Raw
1'use strict';
2// TODO: Remove from `core-js@4`
3var $ = require('../internals/export');
4var charAt = require('../internals/string-multibyte').charAt;
5var requireObjectCoercible = require('../internals/require-object-coercible');
6var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
7var toString = require('../internals/to-string');
8
9// `String.prototype.at` method
10// https://github.com/mathiasbynens/String.prototype.at
11$({ target: 'String', proto: true, forced: true }, {
12 at: function at(index) {
13 var S = toString(requireObjectCoercible(this));
14 var len = S.length;
15 var relativeIndex = toIntegerOrInfinity(index);
16 var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
17 return (k < 0 || k >= len) ? undefined : charAt(S, k);
18 }
19});