Прототип — очень интересная концепция, которая существует только в JavaScript.
Как вы, возможно, знаете, Object в JavaScript наследует свое свойство своему дочернему элементу.
function parents() { this.tall = 'very tall'; this.face = 'handsome'; } let child = new parents;
Если мы используем ключевое слово new
, он унаследует объявление своего свойства.
Дочерний элемент будет иметь то же свойство своих родителей parents
.
Это ручное наследование от своих родителей, но only
в JavaScript существует это еще один способ унаследовать свое имущество своему ребенку.
› Здесь в игру вступает прототип.
Переключим стрелку.
Добавили ли мы свойство Prototype в родителей?
Мы можем назвать прототип геном.
If my parents were tall, I will be tall. If my parents were handsome and pretty, I will be handsome. // I know it's not always happen to the real world.. but worth to have as an example here :)
^ Таким образом, как только мы устанавливаем какое-либо свойство в прототипе (гене) его родителей, дочерний элемент имеет то же свойство.
parents.prototype.lastName = 'lee'; console.log(child.lastName); // ???
Если в объекте нет свойства с именем lastName
, машина также будет искать его родителей. ‹- Это называется prototype chain
.
console.log(child.lastName); // 'lee'
Возможно, вы уже сталкивались с этим сайтом, верно?
Там сказано Array.prototype.slice()
обычно мы используем метод среза без ключевого слова prototype
, но почему он показывает вам Array.prototype.slice()
?
Это потому, что у Array есть свойство под названием slice
в их гене.
Массив — это тип данных javascript, который может содержать несколько значений со своим индексом. и это тоже тип объекта; он наследует свое свойство своему дочернему элементу, дочерний элемент получит свойство гена своего родителя, которым является, например, метод среза.
Итак, в Array уже встроено множество свойств прототипа.