From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/string/fromcodepoint/index.html | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/string/fromcodepoint/index.html (limited to 'files/uk/web/javascript/reference/global_objects/string/fromcodepoint') diff --git a/files/uk/web/javascript/reference/global_objects/string/fromcodepoint/index.html b/files/uk/web/javascript/reference/global_objects/string/fromcodepoint/index.html new file mode 100644 index 0000000000..2825480bfd --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/string/fromcodepoint/index.html @@ -0,0 +1,171 @@ +--- +title: String.fromCodePoint() +slug: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +tags: + - ECMAScript 2015 + - JavaScript + - Method + - String + - Довідка +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +--- +
{{JSRef}}
+ +

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

+ +

Синтаксис

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

Параметри

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

Вертає

+ +

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

+ +

Винятки

+ + + +

Опис

+ +

Цей метод вертає власне рядок, що належить до {{glossary("Primitive", "простого типу даних")}}, а не об'єкт класу {{jsxref("String")}}.

+ +

Позаяк fromCodePoint() є статичним методом класу {{jsxref("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;
+    }
+  }());
+}
+
+ +

Специфікації

+ + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}{{Spec2('ES2015')}}Первинне визначення.
{{SpecName('ESDraft', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}{{Spec2('ESDraft')}} 
+ +

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

+ + + +

{{Compat("javascript.builtins.String.fromCodePoint")}}

+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf