Ця концепція є дуже гнучкою, тому може використовуватися для реалізації деяких понять об'єктно-орієнтованого програмування, таких як успадкування.
Реалізація успадкування
Можна легко створити ClassA. Оскільки немає явних класів, ми можемо визначити поведінковий набір, просто створивши функцію, подібну до цієї:
Примірник цього «класу» може бути створений за допомогою ключового слова new:
Використовуємо його за допомогою нашого об'єкта:
Досить просто, чи не так?
Весь приклад займає всього вісім рядків коду:
Тепер давайте додамо інструмент для створення «успадкування» між класами. Цей інструмент повинен робити лише одну річ: клонувати прототип:
Саме тут відбувається магія! Клонуючи прототип, ми передаємо всі члени і функції в новий клас.
Таким чином, якщо ми хочемо додати другий клас, який буде спадкоємцем першого, нам потрібно просто використовувати наступний код:
Так як ClassB успадковує функцію print від ClassA. Наступного код працює:
І створює такий висновок:
Ми навіть можемо перевизначити функцію print для ClassB:
В даному випадку, отриманий результат виглядає наступним чином:
Хитрість тут в тому, щоб викликати ClassA.prototype для отримання базової функції print. Потім завдяки функції call ми можемо викликати базову функцію для поточного об'єкта (this).
Результат виконання коду наступний:
І трохи філософії.