From bed0b32f0b50a9fe9d57a5f23a811e540fc52273 Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Thu, 9 May 2019 14:33:35 +0200 Subject: [PATCH 1/4] sync with origin --- .../1-string-new-property/solution.md | 17 ++++++----------- .../01-primitives-methods/article.md | 12 ++++++------ 2 files changed, 12 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 732dfefa5..fde35b31f 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,23 +9,18 @@ str.test = 5; // (*) alert(str.test); ``` -Ви можете отримати два результати: +В залежності від втановлений у вас `use strict` чи ні, результати будуть наступними: 1. `undefined` -2. помилку. +2. помилку. (строгий режим) Чому? Давайте повторимо те, що відбувається в рядку `(*)`: 1. Коли ми намагаємося отримати доступ до `str`, створюється "об'єкт обгортка". -2. Операція з властивістю здійснюється в ній. Отже, об'єкт отримує властивість `test`. -3. Операція закінчується, і "об'єкт обгортка" зникає. - -Отже, на останньому рядку `str` не має властивості. Для кожної операції створюється новий об'єкт обгортка. - -Деякі браузери можуть вирішити додатково обмежити програміста і взагалі заборонити присвоювати властивості примітивам. Тому на практиці ми можемо бачити помилки в рядку `(*)`. Але це трохи відрізняється від специфікації. +2. В строгому режимі, спроба запису викличе помилку. +3. В іншому випадку операція з властивістю здійсниться, об'єкт отримує `test` властивість, але після цього "об'єкт обгортка" зникає. +Отже, якщо код виконується не в строгому режимі, на останньому рядку `str` не має властивості `test`. **Цей приклад чітко показує, що примітиви не є об'єктами.** -Вони просто не можуть зберігати дані. - -Всі операції з властивостями/методами виконуються за допомогою тимчасових об'єктів. +Вони не можуть зберігати додаткові данні. 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..20cc5259a 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -14,7 +14,7 @@ JavaScript дозволяє працювати з примітивами (ряд Об'єкт - можливо зберігати декілька значень як властивості. -- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти; функції - це теж об'єкти. +- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти: функції - це теж об'єкти. Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. @@ -48,7 +48,7 @@ john.sayHi(); // Привіт друже! 1. Примітиви залишаються примітивами. Лише значення, як хотіли. 2. Мова дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. -3. Колі це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. +3. Для цього створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів. @@ -91,18 +91,18 @@ alert( n.toFixed(2) ); // 1.23 Наприклад: ```js run -alert( typeof 1 ); // "number" +alert( typeof 0 ); // "number" -alert( typeof new Number(1) ); // "object"! +alert( typeof new Number(0) ); // "object"! ``` -та завдяки тому що `zero` об'єкт, ми побачимо алерт: +Об'єкти завжди повертають `true` в `if`, отже ми побачимо алерт: ```js run let zero = new Number(0); if (zero) { // zero є true, тому що це об'єкт - alert( "zero є true?!?" ); + alert( "zero є true!?!" ); } ``` From 3659b18201462bb518b5dbe084cd015a9b0314b0 Mon Sep 17 00:00:00 2001 From: Stepan Suvorov Date: Thu, 9 May 2019 14:38:00 +0200 Subject: [PATCH 2/4] cleanup merge conflicts --- 1-js/05-data-types/01-primitives-methods/article.md | 12 +----------- 1 file changed, 1 insertion(+), 11 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 bf5819ced..8240d005a 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -13,13 +13,8 @@ JavaScript дозволяє працювати з примітивами (ряд Об'єкт -<<<<<<< HEAD - можливо зберігати декілька значень як властивості. - може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти: функції - це теж об'єкти. -======= -- можна зберігати декілька значень як властивості. -- може бути створений за допомогою `{}`, наприклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти; функції - це теж об'єкти. ->>>>>>> 3403c989a4dd0a328ab32cc002e15f61bd98e99a Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. @@ -52,13 +47,8 @@ john.sayHi(); // Привіт друже! Рішення виглядає трошки дивно, але так і є: 1. Примітиви залишаються примітивами. Лише значення, як хотіли. -<<<<<<< HEAD -2. Мова дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. -3. Для цього створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. -======= 2. JavaScript дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. -3. Коли це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. ->>>>>>> 3403c989a4dd0a328ab32cc002e15f61bd98e99a +3. Для цього створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів. From 96d6bd3ae302b5b7fc93adf0bfba71b3a4b28be8 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 9 May 2019 16:34:33 +0300 Subject: [PATCH 3/4] add 'use strict' condition to solution --- .../1-string-new-property/solution.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 fde35b31f..ad4eac6a9 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,17 +9,17 @@ str.test = 5; // (*) alert(str.test); ``` -В залежності від втановлений у вас `use strict` чи ні, результати будуть наступними: -1. `undefined` -2. помилку. (строгий режим) +В залежності від того, втановлений у вас `use strict` чи ні, результати будуть наступними: +1. `undefined` (без строгого режиму) +2. Помилка (строгий режим) -Чому? Давайте повторимо те, що відбувається в рядку `(*)`: +Чому? Давайте повторимо те, що відбувається в рядку, який позначено `(*)`: 1. Коли ми намагаємося отримати доступ до `str`, створюється "об'єкт обгортка". 2. В строгому режимі, спроба запису викличе помилку. -3. В іншому випадку операція з властивістю здійсниться, об'єкт отримує `test` властивість, але після цього "об'єкт обгортка" зникає. +3. В іншому випадку операція здійсниться і об'єкт отримає властивість `test`, але після цього "об'єкт обгортка" зникне. -Отже, якщо код виконується не в строгому режимі, на останньому рядку `str` не має властивості `test`. +Отже, якщо код виконується не в строгому режимі, на останньому рядку `str` не матиме властивості `test`. **Цей приклад чітко показує, що примітиви не є об'єктами.** From 8e01b82143ca3fd5ff65df23c1d2b6f6bca5699c Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 9 May 2019 16:38:46 +0300 Subject: [PATCH 4/4] corrections from English version --- 1-js/05-data-types/01-primitives-methods/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 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 8240d005a..cf3ae1d3d 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -13,8 +13,8 @@ JavaScript дозволяє працювати з примітивами (ряд Об'єкт -- можливо зберігати декілька значень як властивості. -- може бути створений за допомогою `{}`, на приклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти: функції - це теж об'єкти. +- можна зберігати декілька значень як властивості. +- може бути створений за допомогою `{}`, наприклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти: функції - це теж об'єкти. Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей.