esnext.string.at.js 753 B

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