del
Просветленный
(20607)
4 года назад
>> Зачем нужен prototype в JavaScript?
Так в JavaScript реализуют наследование. поищи в интернете определение слова "прототип"
>> При создании любого объекта в JavaScript создается новый объект __proto__ ...
Это выдуманная чушь никаких дополнительных объектов не создается.
>> При объявлении функции или класса создается также объект prototype ...
Такая же чушь.
__proto__ это ссылка на уже созданный ранее отдельный объект.
к примеру Object это один отдельный объект и все его потомки просто на него ссылаются. Соответственно изменив этот объект ты сразу же изменяешь всех его потомков
Это основное отличие прототипного наследования от конструирования экземпряров класса в языках навроде С++ где при инстанцировании экземпляра класса вызываются все конструкторы по цепочке наследования и создается отдельный класс со всеми свойствами и методами.
В JavaScript создается только текущий объект и добавляется ссылка на его прототип а свойства и методы ищутся по цепочке прототипов т. е. если метод не найден у текущего объекта то он ищется у прототипа если он снова не найден то он ищется у прототипа прототипа и так далее.
В компилируемых языках методы и свойства конструируются полностью и сразу конструктором.
В JavaScript используются разветвленная древовидная структура живых прототипов
их в любой момент можно изменять и это сразу же отразится на потомках что позволяет на полную катушку использовать метопрограммирование.
Денис АлександровичУченик (41)
4 года назад
При объявлении функции, у нее автоматически создается свойство prototype, свойство prototype должно быть у какого-то объекта, правильно? Какого объекта?
Зачем создается свойство prototype в движке Javascript? Какая основная цель создания свойства prototype? Для того чтобы инициализировать конструктор когда создам объект?
Денис АлександровичУченик (41)
4 года назад
После того как я через new создам объект произойдет инициализация конструктора, но само создание конструктора происходит после объявлении функции или класса?
Денис АлександровичУченик (41)
4 года назад
Это скрытые свойства самого движка Javascript или скрытые свойства объекта Object? Ведь свойства __proto__ и prototype имеет какой-то объект. Какой объект имеет эти свойства?
При создании любого объекта в JavaScript создается новый объект __proto__ в системе который ссылается на функцию (класс) с помощью которого этот объект создан.
При объявлении функции или класса создается также объект с именем prototype.
Он создается для того чтобы потомки функции-классы могли унаследовать его свойства или для того чтобы сделать чисто инициализацию конструктора, который создается когда объявляется любая функция или класс?