Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Сводка
Метод codePointAt()
возвращает неотрицательное целое число, являющееся закодированным в UTF-16 значением кодовой точки.
Синтаксис
str.codePointAt(pos)
Параметры
pos
- Позиция элемента в строке, чья кодовоя точка возвращается функцией.
Описание
Если на указанной позиции нет элементов, будет возвращено значение undefined
. Если суррогатная пара UTF-16 не начинается в позиции pos
, будет возвращено кодовое значение в позиции pos
.
Примеры
Пример: использование метода codePointAt()
'ABC'.codePointAt(1); // 66 '\uD800\uDC00'.codePointAt(0); // 65536 'XYZ'.codePointAt(42); // undefined
Полифилл
Следующий полифилл расширяет прототип строки определённой в ECMAScript 6 функцией codePointAt()
, если браузер не имеет её родной поддержки.
/*! https://mths.be/codepointat v0.1.0 от @mathias */ if (!String.prototype.codePointAt) { (function() { 'use strict'; // необходимо для поддержки методов `apply`/`call` с `undefined`/`null` var codePointAt = function(position) { if (this == null) { throw TypeError(); } var string = String(this); var size = string.length; // `ToInteger` var index = position ? Number(position) : 0; if (index != index) { // лучше, чем `isNaN` index = 0; } // Проверяем выход индекса за границы строки if (index < 0 || index >= size) { return undefined; } // Получаем первое кодовое значение var first = string.charCodeAt(index); var second; if ( // проверяем, не начинает ли оно суррогатную пару first >= 0xD800 && first <= 0xDBFF && // старшая часть суррогатной пары size > index + 1 // следующее кодовое значение ) { second = string.charCodeAt(index + 1); if (second >= 0xDC00 && second <= 0xDFFF) { // младшая часть суррогатной пары // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; } } return first; }; if (Object.defineProperty) { Object.defineProperty(String.prototype, 'codePointAt', { 'value': codePointAt, 'configurable': true, 'writable': true }); } else { String.prototype.codePointAt = codePointAt; } }()); }
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 6 (ECMA-262) Определение 'String.prototype.codePointAt' в этой спецификации. |
Кандидат в рекомендации | Изначальное определение. |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | 41 | 29 (29) | 11 на Windows 10 Preview | Нет | Нет |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | Нет | Нет | 29.0 (29) | Нет | Нет | Нет |