Какой прототип в 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>

Результат: