JavaScript ООП (прототип) #2
Nov 27 2022
Привет, друзья, меня зовут Беннисон. В этом блоге я собираюсь объяснить, как ООП работает в Javascript, и объяснить, чем оно отличается от классического ООП. Прежде чем читать эту статью, пожалуйста, прочтите мой предыдущий блог, посвященный основам ООП.

Привет, друзья, меня зовут Беннисон. В этом блоге я собираюсь объяснить, как ООП работает в Javascript, и объяснить, чем оно отличается от классического ООП. Прежде чем читать эту статью, пожалуйста, прочтите мой предыдущий блог, посвященный основам ООП .
Что такое прототип?
- В Javascript у нас есть то, что называется прототипом. В JavaScript каждый объект будет связан с определенным прототипом. Итак, у каждого объекта есть прототипы. прототип также содержит свойства и методы.
- Здесь важно то, что методы и свойства прототипа могут быть доступны объекту.
- В классическом ООП объект создается из класса, что называется созданием экземпляра. Здесь класс — это просто схема для создания объектов.
- Но в Javascript эта терминология просто другая. Здесь каждый объект связан с другими объектами , и эти объекты называются прототипами .

- Наследование прототипов означает прототип, содержащий методы, и прототипы, доступные для всех объектов, связанных с этим прототипом.
- Итак, объект наследует методы и свойства от прототипа, вот как это называется прототипным наследованием. это наследование отличается от наследования классов, когда один класс наследуется от другого класса. Но в данном случае экземпляр наследуется от базового класса.
- На изображении выше в javascript стрелка ООП указывает вверх, это означает, что объект делегирует свое поведение прототипам.
- В классическом ООП методы копируются из класса в экземпляры (объекты).
const numbers = [1, 2, 3, 4,5];
numbers.map((num) => num * 2)


- Функция-конструктор используется для создания объектов из функций. именно так реализованы встроенные объекты, такие как методы Array и map.
- Это современная альтернатива функциям-конструкторам. Классы ES6 работают так же, как функция конструктора. Класс ES6 не ведет себя как классический ООП. За кулисами классы ES6 реализуются с помощью функций конструктора.
class User {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
getFullName() {
console.log(this.firstName + ' ' + this.lastName);
}
}
const user = new User('Bennison', 'J');
console.log(user); // { firstName: 'Bennison', lastName: 'J' }
console.log(user.hasOwnProperty('firstName')); // true
console.log(user.hasOwnProperty('getFullName')); // false
- Метод «object.create()» — самый простой способ связать объект с объектом-прототипом.
const objOne = {
firstName: 'Bennison',
lastName: 'J',
getFullName: function () {
console.log(this.firstName + ' ' + this.lastName);
}
};
const objTwo = Object.create(objOne);
console.log(objTwo); // {}
objTwo.getFullName(); // Bennison J
- Я надеюсь, что в этом блоге мы изучили основы прототипного наследования в Javascript. Если вы не смогли понять приведенные выше примеры, не волнуйтесь, я объясню больше об этих концепциях в своих следующих блогах. Спасибо, что читаете этот блог, до скорой встречи.