Статичний метод 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.
Draft  

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support 41Edge Full support YesFirefox Full support 29IE No support NoOpera Full support 28Safari Full support 10WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 29Opera Android Full support YesSafari iOS Full support 10Samsung Internet Android Full support Yesnodejs Full support 4.0.0
Full support 4.0.0
Full support 0.12
Disabled
Disabled From version 0.12: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Див. також

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

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