string-at 



A robust & optimized ES3-compatible polyfill for the String.prototype.at
proposal for ECMAScript 6/7.
This code is almost entirely copied from @mathiasbynens's excellent polyfill at https://mths.be/at - I created this one so that it did not automatically modify String.prototype
, and so that it would fit in more neatly with the es7-shim
.
Use it as a standalone function, or call its shim
method to install it as a polyfill.
Example
var at = require('string-at');
var assert = require('assert');
var surrogatePair = '\uD834\uDF06 abc';
assert(surrogatePair.length === 6);
assert(at(surrogatePair, 0) === '\uD834\uDF06');
assert(at(surrogatePair, 1) === '\uDF06');
var i = 0;
var str = '';
while (str.length < surrogatePair.length) {
str += at(surrogatePair, str.length);
i += 1;
}
assert(str === surrogatePair);
assert(i === 4);
assert(str.length === 6);
at.shim();
assert(surrogatePair.at(0) === at(surrogatePair, 0));
Tests
Simply clone the repo, npm install
, and run npm test