Вы читаете английскую версию этой статьи, так как пока нет перевода на данный язык. Помогите нам перевести эту статью!
Сводка
Статический метод String.fromCodePoint()
возвращает строку, созданную из указанной последовательности кодовых точек.
Синтаксис
String.fromCodePoint(num1[, ...[, numN]])
Параметры
num1, ..., numN
- Последовательность кодовых точек.
Выбрасываемые исключения
RangeError
- Исключение
RangeError
выбрасывается в случае, если методу предоставлена неверная кодовая точка Юникода (например, "RangeError: NaN is not a valid code point").
Описание
Поскольку метод fromCodePoint()
является статическим методом объекта String
, вы всегда должны использовать его как String.fromCodePoint()
, а не как метод созданного вами экземпляра String
.
Примеры
Пример: использование метода fromCodePoint()
String.fromCodePoint(42); // "*" String.fromCodePoint(65, 90); // "AZ" String.fromCodePoint(0x404); // "\u0404" String.fromCodePoint(0x2F804); // "\uD87E\uDC04" String.fromCodePoint(194564); // "\uD87E\uDC04" String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07" String.fromCodePoint('_'); // RangeError String.fromCodePoint(Infinity); // RangeError String.fromCodePoint(-1); // RangeError String.fromCodePoint(3.14); // RangeError String.fromCodePoint(3e-2); // RangeError String.fromCodePoint(NaN); // RangeError
// Метод String.fromCharCode() не может вернуть символ по такой большой кодовой точке // Следующий же метод может вернуть 4-байтный символ так же, как и обычный // 2-байтный (то есть, он может вернуть один символ, который на самом деле // имеет длину 2, а не 1!) console.log(String.fromCodePoint(0x2F804)); // или 194564 в десятичной записи
Полифилл
Метод String.fromCodePoint()
был добавлен к стандарту ECMAScript в 6-й версии и может поддерживаться ещё не во всех браузерах или окружениях. Используйте код ниже в качестве полифилла:
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ if (!String.fromCodePoint) { (function() { var defineProperty = (function() { // IE 8 поддерживает метод `Object.defineProperty` только на элементах DOM try { var object = {}; var $defineProperty = Object.defineProperty; var result = $defineProperty(object, object, object) && $defineProperty; } catch(error) {} return result; }()); var stringFromCharCode = String.fromCharCode; var floor = Math.floor; var fromCodePoint = function() { var MAX_SIZE = 0x4000; var codeUnits = []; var highSurrogate; var lowSurrogate; var index = -1; var length = arguments.length; if (!length) { return ''; } var result = ''; while (++index < length) { var codePoint = Number(arguments[index]); if ( !isFinite(codePoint) || // `NaN`, `+Infinity` или `-Infinity` codePoint < 0 || // неверная кодовая точка Юникода codePoint > 0x10FFFF || // неверная кодовая точка Юникода floor(codePoint) != codePoint // не целое число ) { throw RangeError('Invalid code point: ' + codePoint); } if (codePoint <= 0xFFFF) { // кодовая точка Базовой многоязыковой плоскости (БМП) codeUnits.push(codePoint); } else { // Астральная кодовая точка; делим её на суррогатную пару // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae codePoint -= 0x10000; highSurrogate = (codePoint >> 10) + 0xD800; lowSurrogate = (codePoint % 0x400) + 0xDC00; codeUnits.push(highSurrogate, lowSurrogate); } if (index + 1 == length || codeUnits.length > MAX_SIZE) { result += stringFromCharCode.apply(null, codeUnits); codeUnits.length = 0; } } return result; }; if (defineProperty) { defineProperty(String, 'fromCodePoint', { 'value': fromCodePoint, 'configurable': true, 'writable': true }); } else { String.fromCodePoint = fromCodePoint; } }()); }
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'String.fromCodePoint' в этой спецификации. |
Стандарт | Изначальное определение. |
Совместимость с браузерами
We're converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven't yet converted the data it contains.
Find out how you can help!
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | 41 | 29 (29) | Нет | Нет | Нет |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | Нет | Нет | 29.0 (29) | Нет | Нет | Нет |