Page 101 - 6108
P. 101
console.log(this.name);
console.log(this.age);
};
Крім безпосереднього визначення властивостей і методів в конструкторі
також можна використовувати властивість prototype. Кожна функція має
властивість prototype, що представляє прототип функції. Тобто властивість
Person.prototype представляє прототип об'єктів Person. І будь-які
властивості і методи, які будуть визначені в Person.prototype, будуть
загальними для всіх об'єктів Person.
function Person(name, surname, age) {
this.name = name;
this.surname= surname;
this.age =age;
}
Person.prototype.toString = function() {
return `${this.name} ${this.surname} is ${this.age} years
old.`
};
Person.prototype.maxAge = 100;
JavaScript використовує прототипне успадкування. Це означає, що в
JavaScript об'єкти успадковуються від інших об'єктів. Прості об'єкти в
JavaScript, створені з використанням {} фігурних дужок, мають тільки один
прототип: Object.prototype. Object.prototype, в свою чергу теж об'єкт, і
все властивості і методи Object.prototype доступні для всіх об'єктів.
Масиви, створені за допомогою [] квадратних дужок, мають кілька
прототипів, в тому числі Object.prototype і Array.prototype. Це означає,
що всі властивості і методи Object.prototype і Array.prototype доступні
для всіх масивів. Однойменні властивості і методи, наприклад .valueOf і
.ToString, викликаються з найближчого прототипу, в цьому випадку з
Array.prototype.
Об'єкти в JavaScript – динамічні "контейнери". Кожен об'єкт містить
посилання на свій об'єкт-прототип.
При спробі отримати доступ до будь-якого властивості об'єкта, властивість
спочатку шукається в самому об'єкті, потім в прототипі об'єкта, після чого в
прототипі прототипу, і так далі. Пошук ведеться до тих пір, поки не знайдено
властивість з таким же ім'ям або не досягнуто кінець ланцюжка прототипів.
При додаванні до об'єкту нової властивості, створюється нова власна
властивість (own property). Єдиним винятком з цього правила є успадковані
властивості, що мають getter або setter.
let obj = {a: 1, b: 2};
obj.__proto__ = {b: 3, c: 4};
Object.prototype.d = 5;
obj.d; //5
JavaScript не має "методів" в сенсі, прийнятому в класичній моделі ООП. В
JavaScript будь-яка функція може бути додана до об'єкта у вигляді його
властивості. Успадкована функція поводиться точно так само, як будь-яка інша