Статичний метод String.fromCodePoint() повертає рядок, створений з послідовності кодів символів Unicode переданих цілими числами.

Синтаксис

String.fromCodePoint(num1[, ...[, numN]])

Параметри

num1, ..., numN
Послідовність цілих чисел, кожне з яких передає код символа Unicode.

Вертає

Рядок із символів, що відповідають переданій послідовності кодів символів Unicode.

Винятки

  • Викидає виняток RangeError, якщо вказано непередбачений (відсутній) код символа Unicode (наприклад, "RangeError: Invalid code point NaN).

Опис

Цей метод вертає власне рядок, що належить до простого типу даних, а не об'єкт класу String.

Позаяк fromCodePoint() є статичним методом класу String, він зазвичай використовується як String.fromCodePoint(), а не як метод створеного об'єкта класу.

Приклади

Використання fromCodePoint()

String.fromCodePoint(42);                    // "*"
String.fromCodePoint(65, 90);                // "AZ"
String.fromCodePoint(0x404, 0x490);          // "ЄҐ"
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() не може створювати символи з такими великими кодами
// Натомість fromCodePoint() може створювати символи, що передаються двома кодовими одиницями (чотири байти),
// так само, як і звичайні двобайтні (тобто може створити рядок, що містить один символ, але має довжину 2 замість 1).
console.log(String.fromCodePoint(0x2F804));  // Значення 194564 в десятковій системі числення

Запасний варіант (поліфіл)

Цей метод з'явився в ECMAScript 2015, тож, можливо, наявний не у всякій реалізації JavaScript. Проте, ви можете використати наступний код для забезпечення запасного варіанту:

/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
if (!String.fromCodePoint) {
  (function() {
    var defineProperty = (function() {
      // IE 8 only supports `Object.defineProperty` on DOM elements
      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`, or `-Infinity`
          codePoint < 0 ||              // not a valid Unicode code point
          codePoint > 0x10FFFF ||       // not a valid Unicode code point
          floor(codePoint) != codePoint // not an integer
        ) {
          throw RangeError('Invalid code point: ' + codePoint);
        }
        if (codePoint <= 0xFFFF) { // BMP code point
          codeUnits.push(codePoint);
        } else { // Astral code point; split in surrogate halves
          // 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)
The definition of 'String.fromCodePoint' in that specification.
Standard Первинне визначення.
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.fromCodePoint' in that specification.
Living Standard  

Підтримка веб-переглядачами

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support41 Yes29 No2810
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes Yes No Yes10

Див. також

Мітки документа й учасники

 Зробили внесок у цю сторінку: asmforce
 Востаннє оновлена: asmforce,