Недавно я работал над некоторыми каталогами кодирования и столкнулся с проблемой, которая попросила меня добавить новый метод в массив. Это заставило меня задуматься о прототипах 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 по этой теме.