From 2bf4a578306f9387f7c6fc62e7436e1b8044f359 Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Wed, 8 May 2019 10:26:38 +0200 Subject: [PATCH 1/7] first try --- .../01-primitives-methods/article.md | 92 ++++++++++--------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index a2dcceb19..d54066a31 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -1,22 +1,23 @@ # Methods of primitives -JavaScript allows us to work with primitives (strings, numbers, etc.) as if they were objects. +JavaScript дозволяє працювати з прімітивамі (рядок, чісла, і т.д. ) так саме як з об'єктами. +Вони також пропонують методи для работи. They also provide methods to call as such. We will study those soon, but first we'll see how it works because, of course, primitives are not objects (and here we will make it even clearer). -Let's look at the key distinctions between primitives and objects. +Давайте розглянемо різніцю між прімітивамі та об'єктами. -A primitive +Прімітив -- Is a value of a primitive type. -- There are 6 primitive types: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`. +- є Is a value of a primitive type. +- існує 6 типів примітивів: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`. -An object +Об'єкт -- Is capable of storing multiple values as properties. -- Can be created with `{}`, for instance: `{name: "John", age: 30}`. There are other kinds of objects in JavaScript; functions, for example, are objects. +- можливо зберігаті декілька значень як властівості. +- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. Існує інщі об'єкті в JavaScript; функції - це теж об'єкти. -One of the best things about objects is that we can store a function as one of its properties. +Одна з цікавіх речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. ```js run let john = { @@ -29,32 +30,35 @@ let john = { john.sayHi(); // Hi buddy! ``` -So here we've made an object `john` with the method `sayHi`. +Отже, ми створили об'єкт `john` з методом `sayHi`. -Many built-in objects already exist, such as those that work with dates, errors, HTML elements, etc. They have different properties and methods. +Вже існує багато вбудованих об'єктів, які працюють з датами, помилками, елементами HTML і т.д. Вони мають різні властивості і методи. -But, these features come with a cost! +Але за все потрібно платити! -Objects are "heavier" than primitives. They require additional resources to support the internal machinery. But as properties and methods are very useful in programming, JavaScript engines try to optimize them to reduce the additional burden. +Об'єкти "важче", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обработки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження. -## A primitive as an object +## Примітів як об'єкт -Here's the paradox faced by the creator of JavaScript: +Маємо парадокс, з яким стикається автор JavaScript: + +- Є багато речей, які можна було б зробити з примітивом, як рядок або число. Було б здорово отримати доступ до них як до методів. +- Примітиви повинні бути максимально швидкими та легкими. - There are many things one would want to do with a primitive like a string or a number. It would be great to access them as methods. - Primitives must be as fast and lightweight as possible. -The solution looks a little bit awkward, but here it is: +Рішення виглядає трошкі дивно, але так і є: -1. Primitives are still primitive. A single value, as desired. -2. The language allows access to methods and properties of strings, numbers, booleans and symbols. -3. When this happens, a special "object wrapper" that provides the extra functionality is created, and then is destroyed. +1. Примітиви залишаються примітивами. Лише значення, як хотіли. +2. Мова дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. +3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністью, та потім він зніщується. -The "object wrappers" are different for each primitive type and are called: `String`, `Number`, `Boolean` and `Symbol`. Thus, they provide different sets of methods. +Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів. -For instance, there exists a method [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) that returns a capitalized string. +Наприклад: існує метод [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) якій повертає рядок з великими літерами. -Here's how it works: +Ось як він працює: ```js run let str = "Hello"; @@ -62,17 +66,17 @@ let str = "Hello"; alert( str.toUpperCase() ); // HELLO ``` -Simple, right? Here's what actually happens in `str.toUpperCase()`: +Не сладно, так? Ось що саме трапляється в `str.toUpperCase()`: -1. The string `str` is a primitive. So in the moment of accessing its property, a special object is created that knows the value of the string, and has useful methods, like `toUpperCase()`. -2. That method runs and returns a new string (shown by `alert`). -3. The special object is destroyed, leaving the primitive `str` alone. +1. Рядок `str` є примітивом. Тому під час звернення до його властивості створюється спеціальний об'єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase ()`. +2. Цей метод виконується і повертає новий рядок (що показує `alert`). +3. Спеціальний об'єкт руйнується, залишаючи тіки примітів `str`. -So primitives can provide methods, but they still remain lightweight. +Отже примітиви можуть надавати методи, але залишаються "легкими". -The JavaScript engine highly optimizes this process. It may even skip the creation of the extra object at all. But it must still adhere to the specification and behave as if it creates one. +Двигун JavaScript добре оптимізує цей процес. Він навіть може пропустити створення додаткового об'єкта взагалі. Але він все ще повинен дотримуватися специфікації і вести себе так, наче він її створює. -A number has methods of its own, for instance, [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) rounds the number to the given precision: +Число має свої методи, наприклад: [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) - округлює число до заданої точності: ```js run let n = 1.23456; @@ -80,15 +84,15 @@ let n = 1.23456; alert( n.toFixed(2) ); // 1.23 ``` -We'll see more specific methods in chapters and . +Ми переглянемо більш конкретні методи у розділах та . -````warn header="Constructors `String/Number/Boolean` are for internal use only" -Some languages like Java allow us to create "wrapper objects" for primitives explicitly using a syntax like `new Number(1)` or `new Boolean(false)`. +````warn header="Конструктори `String/Number/Boolean` тікі для внутрішнього використання" +Деякі мови як Java дозволяють створювати "об'єкт обгортку" для примітивів явно використовуючі сінтакс як `new Number(1)` або `new Boolean(false)`. -In JavaScript, that's also possible for historical reasons, but highly **unrecommended**. Things will go crazy in several places. +У JavaScript це також можливо з історичних причин, але надзвичайно **не рекомендується**. Це призведе до непередбачуваних речей. -For instance: +Наприклад: ```js run alert( typeof 1 ); // "number" @@ -96,18 +100,20 @@ alert( typeof 1 ); // "number" alert( typeof new Number(1) ); // "object"! ``` -And because what follows, `zero`, is an object, the alert will show up: +та завдяки тому що `zero` об'єкт, ми побачимо алерт: ```js run let zero = new Number(0); -if (zero) { // zero is true, because it's an object +if (zero) { // zero є true, тому що це об'єкт alert( "zero is truthy?!?" ); } ``` -On the other hand, using the same functions `String/Number/Boolean` without `new` is a totally sane and useful thing. They convert a value to the corresponding type: to a string, a number, or a boolean (primitive). +З іншого боку, використання тих же самих функцій `String / Number / Boolean` без` new` є абсолютно розумною і корисною річчю. Вони перетворюють значення у відповідний тип: до рядка, числа або булевого (примітиву). + +Наприклад, це цілком справедливо: For example, this is entirely valid: ```js let num = Number("123"); // convert a string to number @@ -115,16 +121,16 @@ let num = Number("123"); // convert a string to number ```` -````warn header="null/undefined have no methods" -The special primitives `null` and `undefined` are exceptions. They have no corresponding "wrapper objects" and provide no methods. In a sense, they are "the most primitive". +````warn header="null/undefined не мають методів" +Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об'єктів обгортк" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими". -An attempt to access a property of such value would give the error: +Спроба доступу до властивості такого значення дасть помилку: ```js run alert(null.test); // error ```` -## Summary +## Виводи -- Primitives except `null` and `undefined` provide many helpful methods. We will study those in the upcoming chapters. -- Formally, these methods work via temporary objects, but JavaScript engines are well tuned to optimize that internally, so they are not expensive to call. +- Примітиви, крім `null` і `undefined`, дають багато корисних методів. Ми вивчимо їх у наступних розділах. +- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвілюватися. From 0bf5087b2b8e36e651dd352b195d120731d2976b Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Wed, 8 May 2019 11:02:22 +0200 Subject: [PATCH 2/7] cleanup + task translation --- .../1-string-new-property/solution.md | 24 +++++++++---------- .../1-string-new-property/task.md | 7 +++--- .../01-primitives-methods/article.md | 8 ++----- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md index a169f7769..9295b0873 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md @@ -1,5 +1,5 @@ -Try running it: +Спробуйте запустити: ```js run let str = "Hello"; @@ -9,23 +9,23 @@ str.test = 5; // (*) alert(str.test); ``` -There may be two kinds of result: +Ви можете отримати два результата: 1. `undefined` -2. An error. +2. помилка. -Why? Let's replay what's happening at line `(*)`: +Чому? Давайте повторимо те, що відбувається в рядку `(*)`: -1. When a property of `str` is accessed, a "wrapper object" is created. -2. The operation with the property is carried out on it. So, the object gets the `test` property. -3. The operation finishes and the "wrapper object" disappears. +1. Коли ми намагаємося отримати доступ до `str`, створюється "об'єкт обгортка". +2. Операція з властивістю здійснюється в ній. Отже, об'єкт отримує властивість `test`. +3. Операція закінчується, і "об'єкт обгортка" зникає. -So, on the last line, `str` has no trace of the property. A new wrapper object for every object operation on a string. +Отже, на останньому рядку `str` не має властивості. Для кожної операціі створююється новий об'єкт обгортка. -Some browsers though may decide to further limit the programmer and disallow to assign properties to primitives at all. That's why in practice we can also see errors at line `(*)`. It's a little bit farther from the specification though. +Деякі браузери можуть вирішити додатково обмежити програміста і взагалі заборонити присвоювати властивості примітивам. Тому на практиці ми можемо бачити помилки в рядку `(*)`. Але це трохи відрізняється від специфікації. -**This example clearly shows that primitives are not objects.** -They just can not store data. +**Цей приклад чітко показує, що примітиви не є об'єктами.** -All property/method operations are performed with the help of temporary objects. +Вони просто не можуть зберігати дані. +Всі операції з властивостями/методами виконуються за допомогою тимчасових об'єктів. diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md index 50c781ea5..37eaa857b 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md @@ -2,10 +2,10 @@ importance: 5 --- -# Can I add a string property? +# Чи можна додати властивість рядка? -Consider the following code: +Розглянемо наступний код: ```js let str = "Hello"; @@ -15,4 +15,5 @@ str.test = 5; alert(str.test); ``` -How do you think, will it work? What will be shown? + +Як ви думаєте, чи буде це працювати? Що буде показано? diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index d54066a31..edfe7fac9 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -2,8 +2,7 @@ JavaScript дозволяє працювати з прімітивамі (рядок, чісла, і т.д. ) так саме як з об'єктами. -Вони також пропонують методи для работи. -They also provide methods to call as such. We will study those soon, but first we'll see how it works because, of course, primitives are not objects (and here we will make it even clearer). +Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку ми подивимось як воно працює, тому що примітиви не є об'єктами (і тут ми зробимо це ще більш зрозумілим). Давайте розглянемо різніцю між прімітивамі та об'єктами. @@ -42,12 +41,9 @@ john.sayHi(); // Hi buddy! Маємо парадокс, з яким стикається автор JavaScript: -- Є багато речей, які можна було б зробити з примітивом, як рядок або число. Було б здорово отримати доступ до них як до методів. +- Є багато речей, які можна було б зробити з примітивом-рядоком або число. Було б здорово отримати доступ до цих методів. - Примітиви повинні бути максимально швидкими та легкими. -- There are many things one would want to do with a primitive like a string or a number. It would be great to access them as methods. -- Primitives must be as fast and lightweight as possible. - Рішення виглядає трошкі дивно, але так і є: 1. Примітиви залишаються примітивами. Лише значення, як хотіли. From 471412ab7cc74b4a2886ca9f08304ee402c7f030 Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Wed, 8 May 2019 17:33:51 +0200 Subject: [PATCH 3/7] grammar cleanup --- .../1-string-new-property/solution.md | 4 +-- .../01-primitives-methods/article.md | 34 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md index 9295b0873..df2a5fbdf 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md @@ -9,7 +9,7 @@ str.test = 5; // (*) alert(str.test); ``` -Ви можете отримати два результата: +Ви можете отримати два результати: 1. `undefined` 2. помилка. @@ -19,7 +19,7 @@ alert(str.test); 2. Операція з властивістю здійснюється в ній. Отже, об'єкт отримує властивість `test`. 3. Операція закінчується, і "об'єкт обгортка" зникає. -Отже, на останньому рядку `str` не має властивості. Для кожної операціі створююється новий об'єкт обгортка. +Отже, на останньому рядку `str` не має властивості. Для кожної операції створюється новий об'єкт обгортка. Деякі браузери можуть вирішити додатково обмежити програміста і взагалі заборонити присвоювати властивості примітивам. Тому на практиці ми можемо бачити помилки в рядку `(*)`. Але це трохи відрізняється від специфікації. diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index edfe7fac9..1d82ac5aa 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -1,22 +1,22 @@ # Methods of primitives -JavaScript дозволяє працювати з прімітивамі (рядок, чісла, і т.д. ) так саме як з об'єктами. +JavaScript дозволяє працювати з примітивами (рядок, числа, і т.д. ) так саме як з об'єктами. Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку ми подивимось як воно працює, тому що примітиви не є об'єктами (і тут ми зробимо це ще більш зрозумілим). -Давайте розглянемо різніцю між прімітивамі та об'єктами. +Давайте розглянемо різницю між примітивами та об'єктами. -Прімітив +Примітив - є Is a value of a primitive type. - існує 6 типів примітивів: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`. Об'єкт -- можливо зберігаті декілька значень як властівості. -- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. Існує інщі об'єкті в JavaScript; функції - це теж об'єкти. +- можливо зберігати декілька значень як властивості. +- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. Існує інші об'єкті в JavaScript; функції - це теж об'єкти. -Одна з цікавіх речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. +Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. ```js run let john = { @@ -35,20 +35,20 @@ john.sayHi(); // Hi buddy! Але за все потрібно платити! -Об'єкти "важче", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обработки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження. +Об'єкти "важче", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обробки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження. -## Примітів як об'єкт +## Примітив як об'єкт Маємо парадокс, з яким стикається автор JavaScript: -- Є багато речей, які можна було б зробити з примітивом-рядоком або число. Було б здорово отримати доступ до цих методів. +- Є багато речей, які можна було б зробити з примітивом-рядком або число. Було б здорово отримати доступ до цих методів. - Примітиви повинні бути максимально швидкими та легкими. -Рішення виглядає трошкі дивно, але так і є: +Рішення виглядає трошки дивно, але так і є: 1. Примітиви залишаються примітивами. Лише значення, як хотіли. 2. Мова дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. -3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністью, та потім він зніщується. +3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів. @@ -62,11 +62,11 @@ let str = "Hello"; alert( str.toUpperCase() ); // HELLO ``` -Не сладно, так? Ось що саме трапляється в `str.toUpperCase()`: +Не складно, так? Ось що саме трапляється в `str.toUpperCase()`: 1. Рядок `str` є примітивом. Тому під час звернення до його властивості створюється спеціальний об'єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase ()`. 2. Цей метод виконується і повертає новий рядок (що показує `alert`). -3. Спеціальний об'єкт руйнується, залишаючи тіки примітів `str`. +3. Спеціальний об'єкт руйнується, залишаючи лише примітив `str`. Отже примітиви можуть надавати методи, але залишаються "легкими". @@ -83,8 +83,8 @@ alert( n.toFixed(2) ); // 1.23 Ми переглянемо більш конкретні методи у розділах та . -````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 це також можливо з історичних причин, але надзвичайно **не рекомендується**. Це призведе до непередбачуваних речей. @@ -118,7 +118,7 @@ let num = Number("123"); // convert a string to number ````warn header="null/undefined не мають методів" -Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об'єктів обгортк" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими". +Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об'єктів обгорток" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими". Спроба доступу до властивості такого значення дасть помилку: @@ -129,4 +129,4 @@ alert(null.test); // error ## Виводи - Примітиви, крім `null` і `undefined`, дають багато корисних методів. Ми вивчимо їх у наступних розділах. -- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвілюватися. +- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвилюватися. From 127a02d35a317b31add6b3bc213af7bc260306b0 Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Thu, 9 May 2019 09:16:44 +0200 Subject: [PATCH 4/7] cleanup --- 1-js/05-data-types/01-primitives-methods/article.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index 1d82ac5aa..45eccd3e8 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -1,5 +1,5 @@ -# Methods of primitives - +# Методи примітивів + JavaScript дозволяє працювати з примітивами (рядок, числа, і т.д. ) так саме як з об'єктами. Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку ми подивимось як воно працює, тому що примітиви не є об'єктами (і тут ми зробимо це ще більш зрозумілим). @@ -8,7 +8,7 @@ JavaScript дозволяє працювати з примітивами (ряд Примітив -- є Is a value of a primitive type. +- є значенням примітивного типу - існує 6 типів примітивів: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`. Об'єкт @@ -112,7 +112,7 @@ if (zero) { // zero є true, тому що це об'єкт Наприклад, це цілком справедливо: For example, this is entirely valid: ```js -let num = Number("123"); // convert a string to number +let num = Number("123"); // конвертує рядок в число ``` ```` @@ -126,7 +126,7 @@ let num = Number("123"); // convert a string to number alert(null.test); // error ```` -## Виводи +## Підсумки - Примітиви, крім `null` і `undefined`, дають багато корисних методів. Ми вивчимо їх у наступних розділах. - Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвилюватися. From 4bc328432f896f37358f4ba1c0cff8506ab3f7bd Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Thu, 9 May 2019 12:52:41 +0200 Subject: [PATCH 5/7] cleanup after review --- .../1-string-new-property/solution.md | 4 +-- .../1-string-new-property/task.md | 2 +- .../01-primitives-methods/article.md | 27 +++++++++---------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md index df2a5fbdf..732dfefa5 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md @@ -2,7 +2,7 @@ Спробуйте запустити: ```js run -let str = "Hello"; +let str = "Привіт"; str.test = 5; // (*) @@ -11,7 +11,7 @@ alert(str.test); Ви можете отримати два результати: 1. `undefined` -2. помилка. +2. помилку. Чому? Давайте повторимо те, що відбувається в рядку `(*)`: diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md index 37eaa857b..6f579e5fb 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md @@ -8,7 +8,7 @@ importance: 5 Розглянемо наступний код: ```js -let str = "Hello"; +let str = "Привіт"; str.test = 5; diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index 45eccd3e8..32a427146 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -9,12 +9,12 @@ JavaScript дозволяє працювати з примітивами (ряд Примітив - є значенням примітивного типу -- існує 6 типів примітивів: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`. +- існує 6 типів примітивів: `string`, `number`, `boolean`, `symbol`, `null` та `undefined`. Об'єкт - можливо зберігати декілька значень як властивості. -- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. Існує інші об'єкті в JavaScript; функції - це теж об'єкти. +- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти; функції - це теж об'єкти. Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. @@ -22,11 +22,11 @@ JavaScript дозволяє працювати з примітивами (ряд let john = { name: "John", sayHi: function() { - alert("Hi buddy!"); + alert("Привіт друже!"); } }; -john.sayHi(); // Hi buddy! +john.sayHi(); // Привіт друже! ``` Отже, ми створили об'єкт `john` з методом `sayHi`. @@ -35,7 +35,7 @@ john.sayHi(); // Hi buddy! Але за все потрібно платити! -Об'єкти "важче", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обробки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження. +Об'єкти "важчі", ніж примітиви. Вони вимагають додаткових ресурсів для підтримки внутрішньої обробки. Але, оскільки властивості і методи дуже корисні в програмуванні, двигун JavaScript намагається оптимізувати їх для зменшення додаткового навантаження. ## Примітив як об'єкт @@ -57,14 +57,14 @@ john.sayHi(); // Hi buddy! Ось як він працює: ```js run -let str = "Hello"; +let str = "Привіт"; -alert( str.toUpperCase() ); // HELLO +alert( str.toUpperCase() ); // ПРИВІТ ``` Не складно, так? Ось що саме трапляється в `str.toUpperCase()`: -1. Рядок `str` є примітивом. Тому під час звернення до його властивості створюється спеціальний об'єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase ()`. +1. Рядок `str` є примітивом. Тому під час звернення до його властивості створюється спеціальний об'єкт, який знає значення рядка і має корисні методи, такі як `toUpperCase()`. 2. Цей метод виконується і повертає новий рядок (що показує `alert`). 3. Спеціальний об'єкт руйнується, залишаючи лише примітив `str`. @@ -102,28 +102,27 @@ alert( typeof new Number(1) ); // "object"! let zero = new Number(0); if (zero) { // zero є true, тому що це об'єкт - alert( "zero is truthy?!?" ); + alert( "zero є true?!?" ); } ``` -З іншого боку, використання тих же самих функцій `String / Number / Boolean` без` new` є абсолютно розумною і корисною річчю. Вони перетворюють значення у відповідний тип: до рядка, числа або булевого (примітиву). +З іншого боку, використання тих же самих функцій `String / Number / Boolean` без `new` є абсолютно розумною і корисною річчю. Вони перетворюють значення у відповідний тип: до рядка, числа або булевого (примітиву). -Наприклад, це цілком справедливо: -For example, this is entirely valid: +Наприклад, це цілком правильно: ```js let num = Number("123"); // конвертує рядок в число ``` ```` -````warn header="null/undefined не мають методів" +````warn header="null/undefined не мають методів" Винятки становлять спеціальні примітиви `null` і `undefined`. Вони не мають відповідних "об'єктів обгорток" і не надають ніяких методів. Ми можемо назвати їх "найпримітивнішими". Спроба доступу до властивості такого значення дасть помилку: ```js run -alert(null.test); // error +alert(null.test); // помилка ```` ## Підсумки From 3d51eff4547ff9b9f62fb1d39aa0667da5576212 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 9 May 2019 14:51:24 +0300 Subject: [PATCH 6/7] small language correction --- .../01-primitives-methods/1-string-new-property/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md index 6f579e5fb..a6f368b0a 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md @@ -2,7 +2,7 @@ importance: 5 --- -# Чи можна додати властивість рядка? +# Чи можна додати властивість до рядка? Розглянемо наступний код: From 3403c989a4dd0a328ab32cc002e15f61bd98e99a Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 9 May 2019 15:03:37 +0300 Subject: [PATCH 7/7] small language corrections --- .../01-primitives-methods/article.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index 32a427146..fbd919431 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -1,8 +1,8 @@ # Методи примітивів -JavaScript дозволяє працювати з примітивами (рядок, числа, і т.д. ) так саме як з об'єктами. +JavaScript дозволяє працювати з примітивами (рядок, число, і т.д.) так само як з об'єктами. -Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку ми подивимось як воно працює, тому що примітиви не є об'єктами (і тут ми зробимо це ще більш зрозумілим). +Вони також надають методи для роботи. Ми вивчимо їх найближчим часом, але спочатку подивимось як воно працює, тому що примітиви не є об'єктами (і тут ми зробимо це ще більш зрозумілим). Давайте розглянемо різницю між примітивами та об'єктами. @@ -13,8 +13,8 @@ JavaScript дозволяє працювати з примітивами (ряд Об'єкт -- можливо зберігати декілька значень як властивості. -- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти; функції - це теж об'єкти. +- можна зберігати декілька значень як властивості. +- може бути створений за допомогою `{}`, наприклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти; функції - це теж об'єкти. Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. @@ -41,18 +41,18 @@ john.sayHi(); // Привіт друже! Маємо парадокс, з яким стикається автор JavaScript: -- Є багато речей, які можна було б зробити з примітивом-рядком або число. Було б здорово отримати доступ до цих методів. +- Є багато речей, які можна було б зробити з примітивом-рядком або числом. Було б добре отримати доступ до цих методів. - Примітиви повинні бути максимально швидкими та легкими. Рішення виглядає трошки дивно, але так і є: 1. Примітиви залишаються примітивами. Лише значення, як хотіли. -2. Мова дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. -3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. +2. JavaScript дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. +3. Коли це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів. -Наприклад: існує метод [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) якій повертає рядок з великими літерами. +Наприклад: існує метод [str.toUpperCase()](https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) якій повертає рядок з великими літерами. Ось як він працює: @@ -128,4 +128,4 @@ alert(null.test); // помилка ## Підсумки - Примітиви, крім `null` і `undefined`, дають багато корисних методів. Ми вивчимо їх у наступних розділах. -- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізован для швидкого виконання цих операцій, тому нам не треба хвилюватися. +- Формально, ці методи працюють через тимчасові об'єкти, але двигун JavaScript оптимізовано для швидкого виконання цих операцій, тому нам не треба хвилюватися.