// TODO: disabled by default because of the conflict with another proposal 'use strict'; var $ = require('../internals/export'); var requireObjectCoercible = require('../internals/require-object-coercible'); var toLength = require('../internals/to-length'); var toInteger = require('../internals/to-integer'); var fails = require('../internals/fails'); var FORCED = fails(function () { return '𠮷'.at(0) !== '\uD842'; }); // `String.prototype.at` method // https://github.com/tc39/proposal-relative-indexing-method $({ target: 'String', proto: true, forced: FORCED }, { at: function at(index) { var S = String(requireObjectCoercible(this)); var len = toLength(S.length); var relativeIndex = toInteger(index); var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; return (k < 0 || k >= len) ? undefined : S.charAt(k); } });