Какой прототип в javascript?
Прототип в JavaScript — это атрибут внутри класса или функции-конструктора, который наследуется от объекта-прототипа. По умолчанию прототип всегда создается после того, как вы создадите функцию в javascript.
Пример :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Prototype</title> </head> <body> <script> function Person() { this.firstName = ""; this.lastName = ""; } const personOne = new Person(); const personTwo = new Person(); console.log(personOne); console.log(personTwo); </script> </body> </html>
Результат:
Механизм прототипа в объектно-ориентированном программировании - это когда вы создаете метод или функцию в атрибуте, когда этот атрибут или функция не существует в вашей функции, тогда javascript будет искать person.prototype (в этом случае), если не найден , javascript будет искать его в функции-конструкторе над ней (родительской) до самой верхней функции-конструктора, а именно object.prototype
Какое использование прототипа в объектно-ориентированном программировании?
Прототип в ООП полезен, когда нам нужен атрибут или метод, полученный из класса конструктора, который определен в форме прототипа, чтобы его нельзя было прочитать извне, потому что он скрыт в объекте __proto__
Как использовать наследование в прототипе JavaScript?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Prototype</title> </head> <body> <script> function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } function Job(jobName) { this.jobName = jobName; } Person.prototype = Object.create(Job.prototype) Person.prototype.sayHello = function(firstName) { console.info(`Hello ${firstName} my name is ${this.firstName}`) } Job.prototype.myJob = function(firstName, job) { console.log(`and ${firstName} job is ${job}`); } const personOne = new Person("Tom", "Chris"); personOne.sayHello("Angel"); personOne.myJob("Tom", "Soldier"); const personTwo = new Person("Angel", "Naila"); personTwo.sayHello("Tom"); personTwo.myJob("Angel", "Doctor"); console.log(personOne); console.log(personTwo); </script> </body> </html>
Результат: