Javascript что такое prototype
Создано: 13 апреля 2025 г.
Создано: 13 апреля 2025 г.
Javascript что такое prototype
В JavaScript prototype
– это встроенный механизм, который используется для реализации прототипного наследования. Проще говоря, в JavaScript любой объект имеет скрытую связь с другим объектом, называемым его прототипом. Когда вы пытаетесь получить доступ к свойству объекта, а в самом объекте такого свойства нет, движок языка попытается найти это свойство в его прототипе, затем в прототипе прототипа и так далее, пока не найдет искомое свойство или не дойдет до конца цепочки прототипов.
Основные моменты о prototype
:
Prototype объекта
Любой объект в JavaScript (кроме созданного с помощью Object.create(null)
) имеет свойство __proto__
(или [[Prototype]]
, если говорить о внутреннем механизме), указывающее на его прототип.
Конструкторы и свойство prototype
Когда вы определяете функцию-конструктор (например, function User() {...}
), у этой функции автоматически появляется свойство prototype
, которое указывает на объект-прототип для всех экземпляров, создаваемых с помощью new User()
.
То есть, если вы делаете:
jsfunction User(name) { this.name = name; } User.prototype.sayHello = function() { console.log("Hello, I'm " + this.name); }; const user1 = new User('Alice'); user1.sayHello(); // "Hello, I'm Alice"
При вызове user1.sayHello()
движок не находит метод sayHello
непосредственно у объекта user1
, а обращается к объекту-прототипу, который хранится в User.prototype
.
Цепочка прототипов (Prototype Chain)
Если нужного свойства нет в объекте, то поиск продолжается вверх по цепочке прототипов, пока не будет найдено это свойство или не будет достигнут объект Object.prototype
, у которого прототип равен null
.
Object.prototype
Самый верхний в иерархии – это Object.prototype
. В нем определены методы вроде toString
, hasOwnProperty
и другие. Все созданные объекты (кроме объектов без прототипа) в конечном счете наследуют эти методы.
Важность и практическое применение
prototype
в рантайме, и объекты станут «видеть» новые или измененные методы.Таким образом, prototype
– это ключевой механизм для организации наследования и повторного использования кода в JavaScript.