Серия основных концепций JavaScript

Прототипы на Javascript

Чтобы понять это, давайте сразу перейдем к простому примеру ниже:

Все в javascript является объектом. В приведенном выше коде мы взяли объект с именем details. Этот объект имеет несколько свойств, таких как имя, адрес и функцию getInfo. Попробуем получить доступ к этим свойствам.

Ой! Что это за дополнительные свойства, кроме name, address и getInfo. Откуда они? Они добавляются движком javascript автоматически. Все эти дополнительные свойства находятся внутри свойства __proto__ . Да, и здесь на помощь приходят прототипы.

Конструктор объекта имеет свойство prototype, которое совпадает со свойством __proto__ в объекте details, как details. имеют тип Object. Таким образом, мы можем сказать, что каждый объект в javascript, такой как массив, функция, переменная, имеет это свойство __proto__ и каждый из предопределенных типов, таких как Функции, Массивы и Объекты имеют прототип свойства, находящийся в нем.

Цепочка прототипов

Свойство прототипа находится не только в объектах, но даже в функции, массив имеет это автоматически сгенерированное свойство, потому что все в javascript является объектом. Итак, рассмотрим массив строк names

Когда вы обращаетесь к свойству __proto__ вышеуказанного массива names, вы можете видеть, что __proto__ содержит другое свойство __proto__ внутри это. Итак, помните? Все является объектом в javascript. Таким образом, этот массив names будет иметь свой собственный __proto__ с __proto__ объекта, поскольку массив также является внутренней реализацией типа Object. Исходя из этого, мы можем сказать, что даже функции, массивы и переменные будут иметь __proto__ в свойстве __proto__. И это то, что называется цепочкой прототипов.

Теперь можете ли вы угадать, каким должен быть __proto__ для __proto__ для Object? Это ноль. Да! потому что после объекта ничего нет. Тип Object сам по себе является строительным блоком всего!

Эти автоматически добавленные дополнительные свойства (__proto__) могут помочь наследовать свойства и функции между объектами, и таким образом работает наследование javascript!

Надеюсь, сегодня вы узнали что-то интересное, и надеюсь, что это поможет вам и в следующем интервью. Я добавлю еще одну статью для детали прототипного наследования. Если вам понравилась эта статья, поделитесь ею со всеми нашими героями javascript и поставьте лайк, чтобы мотивировать меня.