Зачем нужен prototype в JavaScript?
При создании любого объекта в JavaScript создается новый объект __proto__ в системе который ссылается на функцию (класс) с помощью которого этот объект создан.
При объявлении функции или класса создается также объект с именем prototype.
Он создается для того чтобы потомки функции-классы могли унаследовать его свойства или для того чтобы сделать чисто инициализацию конструктора, который создается когда объявляется любая функция или класс?
JavaScript
Зачем нужен prototype в JavaScript?
>> Зачем нужен prototype в JavaScript?
Так в JavaScript реализуют наследование. поищи в интернете определение слова "прототип"
>> При создании любого объекта в JavaScript создается новый объект __proto__ ...
Это выдуманная чушь никаких дополнительных объектов не создается.
>> При объявлении функции или класса создается также объект prototype ...
Такая же чушь.
__proto__ это ссылка на уже созданный ранее отдельный объект.
к примеру Object это один отдельный объект и все его потомки просто на него ссылаются. Соответственно изменив этот объект ты сразу же изменяешь всех его потомков
Это основное отличие прототипного наследования от конструирования экземпряров класса в языках навроде С++ где при инстанцировании экземпляра класса вызываются все конструкторы по цепочке наследования и создается отдельный класс со всеми свойствами и методами.
В JavaScript создается только текущий объект и добавляется ссылка на его прототип а свойства и методы ищутся по цепочке прототипов т. е. если метод не найден у текущего объекта то он ищется у прототипа если он снова не найден то он ищется у прототипа прототипа и так далее.
В компилируемых языках методы и свойства конструируются полностью и сразу конструктором.
В JavaScript используются разветвленная древовидная структура живых прототипов
их в любой момент можно изменять и это сразу же отразится на потомках что позволяет на полную катушку использовать метопрограммирование.
Так в JavaScript реализуют наследование. поищи в интернете определение слова "прототип"
>> При создании любого объекта в JavaScript создается новый объект __proto__ ...
Это выдуманная чушь никаких дополнительных объектов не создается.
>> При объявлении функции или класса создается также объект prototype ...
Такая же чушь.
__proto__ это ссылка на уже созданный ранее отдельный объект.
к примеру Object это один отдельный объект и все его потомки просто на него ссылаются. Соответственно изменив этот объект ты сразу же изменяешь всех его потомков
Это основное отличие прототипного наследования от конструирования экземпряров класса в языках навроде С++ где при инстанцировании экземпляра класса вызываются все конструкторы по цепочке наследования и создается отдельный класс со всеми свойствами и методами.
В JavaScript создается только текущий объект и добавляется ссылка на его прототип а свойства и методы ищутся по цепочке прототипов т. е. если метод не найден у текущего объекта то он ищется у прототипа если он снова не найден то он ищется у прототипа прототипа и так далее.
В компилируемых языках методы и свойства конструируются полностью и сразу конструктором.
В JavaScript используются разветвленная древовидная структура живых прототипов
их в любой момент можно изменять и это сразу же отразится на потомках что позволяет на полную катушку использовать метопрограммирование.
Похожие вопросы
- Зачем нужны классы в JavaScript?
- Зачем нужны замыкание в JavaScript? И что это такое?
- Нужна помощь по javaScript
- Зачем нужны Циклы в JavaScript? Бесконечный цикл который не делает ничего.
- Зачем нужен return в JavaScript?
- Я не понимаю для чего нужен return в javascript. Да он возврошает число, но пффф в контексте какой от него толк???
- Я не понимаю... Зачем нужен this в javascript?
- Что такое prototype? (подробности внутри)
- Есть ли аналоги JavaScript?
- С чего начать учить JavaScript?
Зачем создается свойство prototype в движке Javascript? Какая основная цель создания свойства prototype? Для того чтобы инициализировать конструктор когда создам объект?