JavaScript Function.prototype — прототип для нових об'єктів


Властивість prototype — це об'єкт, який стане прототипом усіх екземплярів, створених через new.

автор: NagarD

Загальний опис

Тут — найплутаніше місце в мові, і плутанина від схожості імен. prototype є в функції і каже, яким буде прототип майбутніх екземплярів. А __proto__ (чи Reflect.getPrototypeOf()) є в об'єкта й каже, який прототип у нього самого.

Методи, покладені у prototype, спільні для всіх екземплярів — вони існують в одному примірнику, а не копіюються в кожен об'єкт. Саме тому класи економні щодо пам'яті.

У стрілкових функцій цієї властивості немає взагалі — і саме тому їх не можна викликати через new.

автор: NagarD

Нотатка

Стрілкова функція не має prototype, тож new (() => {}) кидає TypeError. Це не обмеження, а суть: стрілка — не конструктор.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
prototype 1+ 1+ 1+ 3+ 12+ 9+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
prototype yes yes yes yes

Приклади

+ запропонувати свій приклад у пісочниці

Метод у прототипі спільний для всіх екземплярів.

function User(name) {
    this.name = name;
}

// метод спільний — існує в ОДНОМУ примірнику
User.prototype.greet = function () {
    return 'Привіт, ' + this.name;
};

const a = new User('Іван');
const b = new User('Марія');

console.log(a.greet === b.greet); // true — та сама функція

// клас робить те саме, лише зрозуміліше
class Modern {
    greet() {}
}

// у стрілки prototype немає
console.log((() => {}).prototype); // undefined
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід