You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/05-data-types/01-primitives-methods/article.md
+21-21Lines changed: 21 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Методи примітивів
2
2
3
-
JavaScript дозволяє працювати з примітивами (рядок, число, тощо) так само як з об’єктами. Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку подивимось як воно працює, тому що примітиви не є об’єктами (і тут ми зробимо це ще більш зрозумілим).
3
+
JavaScript дозволяє працювати з примітивами (рядок, число, тощо) так, ніби вони об’єкти. Примітиви також забезпечені методами для роботи. Ми вивчимо їх найближчим часом, але спочатку подивимось як воно працює, бо все ж таки примітиви не є об’єктами (і тут ми краще це зрозуміємо).
Отже, ми створили об’єкт `john` з методом `sayHi`.
31
31
32
-
Вже існує багато вбудованих об’єктів, які працюють з датами, помилками, елементами HTML і т.д. Вони мають різні властивості і методи.
32
+
Існує багато вбудованих об’єктів, які працюють з датами, помилками, елементами HTML і т.д. Вони мають різні властивості і методи.
33
33
34
34
Але за все потрібно платити!
35
35
36
36
Об’єкти "важчі", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обробки.
37
37
38
38
## Примітив як об’єкт
39
39
40
-
Маємо парадокс, з яким зустрічається автор JavaScript:
40
+
Маємо парадокс, з яким зустрівся автор JavaScript:
41
41
42
-
- Є багато речей, які можна було б зробити з примітивом-рядком або числом. Було б добре отримати доступ до цих методів.
42
+
- Є багато речей, які можна було б зробити з примітивом-рядком або числом. Було б дуже добре якби можна було викликати для примітивів відповідні методи.
43
43
- Примітиви повинні бути максимально швидкими та легкими.
44
44
45
-
Рішення виглядає трохи дивно, але так і є:
45
+
Рішення, яке він придумав, вийшло трохи незграбним. Та все ж. Ось як це працює в JavaScript:
46
46
47
-
1. Примітиви залишаються примітивами. Лише значення, як ви і хотіли.
48
-
2. JavaScript дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів.
49
-
3. Для цього створюється спеціальний "об’єктобгортка" з додатковою функціональністю, який потім знищується.
47
+
1. Примітиви залишаються примітивами. В них, як і задумано, є лише одне значення.
48
+
2.Але JavaScript дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів.
49
+
3. Для цього створюється спеціальний "об’єкт-обгортка" (англ. object wrapper) з додатковою функціональністю, який потім знищується.
50
50
51
-
Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean`, `Symbol` та `BigInt`. Отже, вони містять різні набори методів.
51
+
Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean`, `Symbol` та `BigInt`. Ну й вони містять різні набори методів.
52
52
53
-
Наприклад: існує такий метод для рядка, як [str.toUpperCase()](https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase), який поверне рядок `str` з великими літерами.
53
+
Наприклад: існує такий метод для рядка, як [str.toUpperCase()](https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase), який поверне рядок `str` з великими літерами.
Не складно, так? Ось що саме трапляється в `str.toUpperCase()`:
64
64
65
-
1. Рядок `str` є примітивом. Тому під час звернення до його властивості створюється спеціальний об’єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase()`.
66
-
2. Цей метод виконується і повертає новий рядок (що показує`alert`).
67
-
3. Спеціальний об’єкт руйнується, залишаючи лише примітив `str`.
65
+
1. Рядок `str` є примітивом. Тому в момент, коли треба звернутись до його властивості, створюється спеціальний об’єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase()`.
66
+
2. Цей метод виконується і повертає новий рядок (який передається в`alert`).
67
+
3. Спеціальний об’єкт знищується, і в пам'яті залишається лише сам примітив `str`.
68
68
69
69
Отже, примітиви можуть надавати методи, але залишаються "легкими".
70
70
71
-
Двигун JavaScript добре оптимізує цей процес. Він навіть може пропустити створення додаткового об’єкта взагалі. Але він все ще повинен дотримуватися специфікації і вести себе так, наче він її створює.
71
+
Рушій JavaScript добре оптимізує цей процес. Він навіть може взагалі пропустити створення додаткового об’єкта-обгортки. Але навіть в таких ситуаціях він поводиться так, наче він той об'єкт-обгортку створив.
72
72
73
73
Число має свої методи, наприклад: [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) - округлює число до заданої точності:
74
74
@@ -81,8 +81,8 @@ alert( n.toFixed(2) ); // 1.23
81
81
Ми переглянемо більш конкретні методи у розділах <info:number> та <info:string>.
82
82
83
83
84
-
````warn header="Конструктори `String/Number/Boolean` лише для внутрішнього використання"
85
-
Деякі мови як Java дозволяють явно створювати "об’єктобгортку" для примітивів, використовуючи синтаксис як`new Number(1)` або `new Boolean(false)`.
84
+
````warn header="Конструктори `String/Number/Boolean`існують лише для внутрішнього використання"
85
+
Деякі мови як от Java дозволяють явно створювати "об’єкт-обгортку" для примітивів, використовуючи синтаксис `new Number(1)` або `new Boolean(false)`.
86
86
87
87
У JavaScript це також можливо з історичних причин, але надзвичайно **не рекомендується**. Це призведе до непередбачуваних речей.
88
88
@@ -94,7 +94,7 @@ alert( typeof 0 ); // "number"
94
94
alert( typeofnewNumber(0) ); // "object"!
95
95
```
96
96
97
-
Об’єкти завжди повертають `true` в `if`, отже ми побачимо `alert`:
97
+
В JavaScript об’єкти завжди повертають `true` в `if`, отже ми побачимо `alert`:
98
98
99
99
```js run
100
100
let zero =newNumber(0);
@@ -104,7 +104,7 @@ if (zero) { // zero є true, тому що це об’єкт
104
104
}
105
105
```
106
106
107
-
З іншого боку, використання тих же самих функцій `String/Number/Boolean`без `new`є абсолютно розумною і корисною річчю. Вони перетворюють значення у відповідний тип: рядок, число або булеве значення (примітиву).
107
+
З іншого боку, використання тих же самих функцій `String/Number/Boolean`, але без `new`попереду -- це абсолютно розумно і корисно. Без `new` ці функції перетворюють значення у відповідний тип: рядок, число або булеве значення (яке буде примітивом).
108
108
109
109
Наприклад, це цілком правильно:
110
110
@@ -114,8 +114,8 @@ let num = Number("123"); // конвертує рядок в число
114
114
````
115
115
116
116
117
-
````warn header="null/undefined не мають методів"
118
-
Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об’єктівобгорток" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими".
117
+
````warn header="null/undefined не мають методів"
118
+
Примітиви `null` і `undefined` є винятками. Вони не мають відповідних "об’єктів-обгорток" і не забезпечені ніякими методами. Ми можемо назвати їх "найбільш примітивними".
119
119
120
120
Спроба доступу до властивості такого значення дасть помилку:
121
121
@@ -125,5 +125,5 @@ alert(null.test); // помилка
125
125
126
126
## Підсумки
127
127
128
-
- Примітиви, крім `null` і `undefined`, дають багато корисних методів. Ми вивчимо їх у наступних розділах.
128
+
- Примітиви (крім `null` і `undefined`) забезпечені багатьма корисними методами. Ми вивчимо їх у наступних розділах.
129
129
- Формально, ці методи працюють через тимчасові об’єкти, але двигун JavaScript оптимізовано для швидкого виконання цих операцій, тому нам не треба хвилюватися.
0 commit comments