1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
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
---
<div>{{JSRef}}</div>
<p>Статичний метод <strong><code>String.fromCodePoint()</code></strong> повертає рядок, створений з послідовності кодів символів Unicode переданих цілими числами.</p>
<h2 id="Синтаксис">Синтаксис</h2>
<pre class="syntaxbox"><code>String.fromCodePoint(<var>num1</var>[, ...[, <var>numN</var>]])</code></pre>
<h3 id="Параметри">Параметри</h3>
<dl>
<dt><code>num1, ..., num<em>N</em></code></dt>
<dd>Послідовність цілих чисел, кожне з яких передає код символа Unicode.</dd>
</dl>
<h3 id="Вертає">Вертає</h3>
<p>Рядок із символів, що відповідають переданій послідовності кодів символів Unicode.</p>
<h3 id="Винятки">Винятки</h3>
<ul>
<li>Викидає виняток <code>{{jsxref("Errors/Not_a_codepoint", "RangeError")}}</code>, якщо вказано непередбачений (відсутній) код символа Unicode (наприклад, "RangeError: Invalid code point NaN).</li>
</ul>
<h2 id="Опис">Опис</h2>
<p>Цей метод вертає власне рядок, що належить до {{glossary("Primitive", "простого типу даних")}}, а не об'єкт класу <code>{{jsxref("String")}}</code>.</p>
<p>Позаяк <code>fromCodePoint()</code> є статичним методом класу <code>{{jsxref("String")}}</code>, він зазвичай використовується як <code>String.fromCodePoint()</code>, а не як метод створеного об'єкта класу.</p>
<h2 id="Приклади">Приклади</h2>
<h3 id="Використання_fromCodePoint()">Використання <code>fromCodePoint()</code></h3>
<pre class="brush: js">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
</pre>
<pre class="brush: js">// Метод String.fromCharCode() не може створювати символи з такими великими кодами
// Натомість fromCodePoint() може створювати символи, що передаються двома кодовими одиницями (чотири байти),
// так само, як і звичайні двобайтні (тобто може створити рядок, що містить один символ, але має довжину 2 замість 1).
console.log(String.fromCodePoint(0x2F804)); // Значення 194564 в десятковій системі числення
</pre>
<h2 id="Запасний_варіант_(поліфіл)">Запасний варіант (поліфіл)</h2>
<p>Цей метод з'явився в ECMAScript 2015, тож, можливо, наявний не у всякій реалізації JavaScript. Проте, ви можете використати наступний код для забезпечення запасного варіанту:</p>
<pre class="brush: js">/*! 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;
}
}());
}
</pre>
<h2 id="Специфікації">Специфікації</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Специфікація</th>
<th scope="col">Статус</th>
<th scope="col">Коментар</th>
</tr>
<tr>
<td>{{SpecName('ES2015', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}</td>
<td>{{Spec2('ES2015')}}</td>
<td>Первинне визначення.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Підтримка_веб-переглядачами">Підтримка веб-переглядачами</h2>
<p class="hidden">Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</p>
<p>{{Compat("javascript.builtins.String.fromCodePoint")}}</p>
<h2 id="Див._також">Див. також</h2>
<ul>
<li>{{jsxref("String.fromCharCode()")}}</li>
<li>{{jsxref("String.prototype.charAt()")}}</li>
<li>{{jsxref("String.prototype.codePointAt()")}}</li>
<li>{{jsxref("String.prototype.charCodeAt()")}}</li>
</ul>
|