Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
grammar cleanup
  • Loading branch information
stevermeister committed May 8, 2019
commit 471412ab7cc74b4a2886ca9f08304ee402c7f030
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ str.test = 5; // (*)
alert(str.test);
```

Ви можете отримати два результата:
Ви можете отримати два результати:
1. `undefined`
2. помилка.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. помилку.


Expand All @@ -19,7 +19,7 @@ alert(str.test);
2. Операція з властивістю здійснюється в ній. Отже, об'єкт отримує властивість `test`.
3. Операція закінчується, і "об'єкт обгортка" зникає.

Отже, на останньому рядку `str` не має властивості. Для кожної операціі створююється новий об'єкт обгортка.
Отже, на останньому рядку `str` не має властивості. Для кожної операції створюється новий об'єкт обгортка.

Деякі браузери можуть вирішити додатково обмежити програміста і взагалі заборонити присвоювати властивості примітивам. Тому на практиці ми можемо бачити помилки в рядку `(*)`. Але це трохи відрізняється від специфікації.

Expand Down
34 changes: 17 additions & 17 deletions 1-js/05-data-types/01-primitives-methods/article.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Methods of primitives

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Article title not translated


JavaScript дозволяє працювати з прімітивамі (рядок, чісла, і т.д. ) так саме як з об'єктами.
JavaScript дозволяє працювати з примітивами (рядок, числа, і т.д. ) так саме як з об'єктами.

Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку ми подивимось як воно працює, тому що примітиви не є об'єктами (і тут ми зробимо це ще більш зрозумілим).

Давайте розглянемо різніцю між прімітивамі та об'єктами.
Давайте розглянемо різницю між примітивами та об'єктами.

Прімітив
Примітив

- є Is a value of a primitive type.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this line "Is a value of a primitive type."

- існує 6 типів примітивів: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

..., null і/та undefined.


Об'єкт

- можливо зберігаті декілька значень як властівості.
- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. Існує інщі об'єкті в JavaScript; функції - це теж об'єкти.
- можливо зберігати декілька значень як властивості.
- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. Існує інші об'єкті в JavaScript; функції - це теж об'єкти.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"В JavaScript існують й інші об'єкти; функції - це теж об'єкти."


Одна з цікавіх речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей.
Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей.

```js run
let john = {
Expand All @@ -35,20 +35,20 @@ john.sayHi(); // Hi buddy!

Але за все потрібно платити!

Об'єкти "важче", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обработки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження.
Об'єкти "важче", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обробки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Об'єкти "важчі" за примітиви.


## Примітів як об'єкт
## Примітив як об'єкт

Маємо парадокс, з яким стикається автор JavaScript:

- Є багато речей, які можна було б зробити з примітивом-рядоком або число. Було б здорово отримати доступ до цих методів.
- Є багато речей, які можна було б зробити з примітивом-рядком або число. Було б здорово отримати доступ до цих методів.
- Примітиви повинні бути максимально швидкими та легкими.

Рішення виглядає трошкі дивно, але так і є:
Рішення виглядає трошки дивно, але так і є:

1. Примітиви залишаються примітивами. Лише значення, як хотіли.
2. Мова дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів.
3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністью, та потім він зніщується.
3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується.

Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів.

Expand All @@ -62,11 +62,11 @@ let str = "Hello";
alert( str.toUpperCase() ); // HELLO
```

Не сладно, так? Ось що саме трапляється в `str.toUpperCase()`:
Не складно, так? Ось що саме трапляється в `str.toUpperCase()`:

1. Рядок `str` є примітивом. Тому під час звернення до його властивості створюється спеціальний об'єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase ()`.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

toUpperCase() - without space

2. Цей метод виконується і повертає новий рядок (що показує `alert`).
3. Спеціальний об'єкт руйнується, залишаючи тіки примітів `str`.
3. Спеціальний об'єкт руйнується, залишаючи лише примітив `str`.

Отже примітиви можуть надавати методи, але залишаються "легкими".

Expand All @@ -83,8 +83,8 @@ alert( n.toFixed(2) ); // 1.23
Ми переглянемо більш конкретні методи у розділах <info:number> та <info:string>.


````warn header="Конструктори `String/Number/Boolean` тікі для внутрішнього використання"
Деякі мови як Java дозволяють створювати "об'єкт обгортку" для примітивів явно використовуючі сінтакс як `new Number(1)` або `new Boolean(false)`.
````warn header="Конструктори `String/Number/Boolean` лише для внутрішнього використання"
Деякі мови як Java дозволяють створювати "об'єкт обгортку" для примітивів явно використовуючи синтаксис як `new Number(1)` або `new Boolean(false)`.

У JavaScript це також можливо з історичних причин, але надзвичайно **не рекомендується**. Це призведе до непередбачуваних речей.

Expand Down Expand Up @@ -118,7 +118,7 @@ let num = Number("123"); // convert a string to number


````warn header="null/undefined не мають методів"
Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об'єктів обгортк" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими".
Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об'єктів обгорток" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими".

Спроба доступу до властивості такого значення дасть помилку:

Expand All @@ -129,4 +129,4 @@ alert(null.test); // error
## Виводи

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's better to translate "Summary" as "Висновки" or "Підсумки"


- Примітиви, крім `null` і `undefined`, дають багато корисних методів. Ми вивчимо їх у наступних розділах.
- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвілюватися.
- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвилюватися.