Недавно я работал над некоторыми каталогами кодирования и столкнулся с проблемой, которая попросила меня добавить новый метод в массив. Это заставило меня задуматься о прототипах JavaScript и о том, как их можно использовать для добавления пользовательских методов к таким объектам, как массивы.
Прототипы объектов JavaScript
Прототипы — это механизм, с помощью которого объекты JavaScript наследуют свойства друг друга. В этой статье мы объясним, что такое прототип, как работают цепочки прототипов и как можно установить прототип для объекта.
Короче говоря, все объекты в JavaScript (и большинство вещей являются объектами в JavaScript 😂), и есть встроенное свойство, называемое prototype
.
Когда объект создается, он наследуется от встроенного объекта с именем Object.prototype, который предоставляет некоторые базовые методы, такие как toString() и valueOf().
Запутанный, но забавный факт: свойство Prototype само по себе тоже является объектом, поэтому у него будет собственный прототип
Использование прототипов для добавления методов в массивы
Итак, вернемся к моему кодированию Kata — вы можете легко добавлять методы к существующим «объектам», таким как массивы (да, в JavaScript массивы тоже являются объектами! 😎)
Например, предположим, что мы хотим добавить к массивам метод с именем first()
, который возвращает первый элемент массива.
Вот как мы можем определить метод getFirst()
с помощью прототипов:
// Example. add a new 'first' method onto Arrays. // This method will return the first item in the array. Array.prototype.getFirst = function() { if (this.length < 1) { return -1 } return this[0] }
Этот код добавляет новый метод с именем first()
в прототип Array. Ключевое слово this
относится к массиву, для которого вызывается метод, поэтому this[0]
возвращает первый элемент массива.
Теперь мы можем использовать метод first()
для любого массива:
const myArray = [1, 2, 3, 4, 5]; console.log(myArray.getFirst()); // 1
Используя прототипы для добавления пользовательских методов к массивам, мы можем расширить функциональность массивов и сделать наш код более гибким и пригодным для повторного использования.
Заключение
В этом кратком блоге мы рассмотрели прототипы JavaScript и то, как их можно использовать для добавления пользовательских методов к таким объектам, как массивы. Понимая прототипы, мы можем расширить функциональность существующих объектов и создать более гибкий и пригодный для повторного использования код. Для получения дополнительной информации о прототипах и объектах JavaScript ознакомьтесь с документацией MDN и w3schools по этой теме.