diff --git a/1-js/08-prototypes/03-native-prototypes/article.md b/1-js/08-prototypes/03-native-prototypes/article.md index a941c7181..85174dc77 100644 --- a/1-js/08-prototypes/03-native-prototypes/article.md +++ b/1-js/08-prototypes/03-native-prototypes/article.md @@ -111,7 +111,7 @@ alert(f.__proto__.__proto__ == Object.prototype); // true, успадковує ## Зміна вбудованих прототипів [#native-prototype-change] -Вбудовані прототипи можуть бути змінені. Наприклад, якщо додати спосіб до `String.prototype, він стає доступним для всіх рядків: +Вбудовані прототипи можуть бути змінені. Наприклад, якщо додати метод до `String.prototype`, він стає доступним для всіх рядків: ```js run String.prototype.show = function() { @@ -144,9 +144,9 @@ if (!String.prototype.repeat) { // якщо такого методу немає String.prototype.repeat = function(n) { // повторіть рядок n разів - // власне, код повинен бути трохи складнішим, ніж це - // (повний алгоритм у можна знайти в специфікації) - // але навіть недосконалий поліфіл часто вважається досить добрим + // насправді, код повинен бути трохи складнішим + // (повний алгоритм можна знайти в специфікації) + // але навіть недосконалий поліфіл часто вважається прийнятним для використання return new Array(n + 1).join(this); }; } @@ -185,14 +185,14 @@ alert( obj.join(',') ); // Привіт,світ! Ще одна можливість полягає в тому, щоб успадкуватися від масиву, встановлюючи `obj.__ proto__` як `Array.prototype`, таким чином всі методи `Array` автоматично будуть доступні в `obj`. -Але це неможливо, якщо `obj` вже успадковує від іншого об’єкта. Пам’ятайте, що ми можемо успадкувати від одного об’єкта за один раз. +Але це неможливо, якщо `obj` вже успадковується від іншого об’єкта. Пам’ятайте, що ми не можемо успадковуватись від декількох об’єктів одночасно. -Запозичення методів є гнучкими, воно дозволяє змішувати функції з різних об’єктів, якщо це необхідно. +Запозичення методів є гнучкими, воно дозволяє змішувати функціональність різних об’єктів, якщо це необхідно. ## Підсумки -- Всі вбудовані об’єкти слідують за однією моделлю: - - Методи зберігаються у прототипі (`Array.prototype`, `Object.prototype`, `Date.prototype` та ін.) - - Сам об’єкт зберігає лише дані (елементи масиву, властивості об’єкта, дату) -- Природу також зберігають методи у прототипах об’єктів-обгорток: `Number.prototype`, `String.prototype` and `Boolean.prototype`. Тільки `undefined` і `null` не мають об’єктів-обгорток +- Всі вбудовані об’єкти слідують однаковому шаблону: + - Методи зберігаються у прототипі (`Array.prototype`, `Object.prototype`, `Date.prototype` та ін.). + - Сам об’єкт зберігає лише дані (елементи масиву, властивості об’єкта, дату). +- Примітиви також зберігають методи у прототипах об’єктів-обгорток: `Number.prototype`, `String.prototype` and `Boolean.prototype`. Тільки `undefined` та `null` не мають об’єктів-обгорток. - Вбудовані прототипи можуть бути змінені або доповнені новими методами. Але їх не рекомендується змінювати. Єдиний допустимий випадок, мабуть, коли ми додаємо якийсь новий стандарт, котрий ще не підтримується рушієм JavaScript