Объект prototype.

  prototype - прототипы объектов.
  В JavaScript формально не существует классов объектов, вместо них есть прототипы.
  Каждый экземпляр объекта prototype соответствует конкретному объекту JavaScript (условного класса объектов с этим прототипом).

  Соответственно свойства и методы любого экземпляра объекта prototype являются свойствами и методами объекта с этим прототипом, и наследуются экземплярами этого объекта.
  Добавление или изменение свойства или метода экземпляра объекта prototype приводит к тому, что меняются свойства и методы объекта с этим прототипом, что приводит к соответствующим изменениям экземпляров этого объекта.
  В принципе, добавить или изменить свойство или метод можно и конкретному экземпляру объекта, однако изменения в объекте prototype приводят к изменениям во всех экземплярах объекта с этим прототипом, полученных после изменения прототипа.
  Как правило, на экземпляр объекта prototype, соответствующий прототипу конкретного объекта, ссылается свойство prototype функции конструктора (как объекта Function) соответствующего объекта JavaScript.
  Однако, не все объекты JavaScript имеют функцию конструктор (например объект Math), у таких объектов нет прототипа (условного класса), такие объекты имеют один единственный экземпляр, который сразу и хранят в себе.

  Прототип объекта Object наследуется всеми объектами JavaScript, поэтому изменения в соответствующем экземпляре объекта prototype, приведет к соответствующим изменениям всех экземпляров всех объектов.
  Кроме того, изменения прототипа (экземпляра объекта prototype) для объекта из цепи прототипов приведет к тому что, эти изменения соответственно отразятся на экземплярах объектов стоящих "правее" в этой цепи.
  Экземпляр доступен:

  Свойства.
  Все свойства и методы соответствующего объекта.

Формат записи в коде скрипта:

  • Экземпляр объекта prototype.Имя[ = Значение]

Значения формата записи:

  • Экземпляр объекта prototype - Любой операнд значения со значением экземпляра объекта prototype.
  • . - Оператор доступа к свойству объекта.
  • Имя - Допустимый символьный код, назначенный именем свойства, заданный непосредственно.
      Если свойства с таким именем нет, то оно будет добавлено в прототип объекта.
      Для более корректного добавления свойства объекта лучше пользоваться методом defineProperty функции Object.
  • = - Оператор присвоения. Ключевое слово в этом формате.
  • Значение - Любой операнд значения, в том числе и функция.
      Если значением будет функция, то изменится или добавится метод соответствующего объекта.
      Прототип объекта надо менять до получения экземпляра этого объекта оператором new.
      Не следует (хоть это формально и возможно) расширять базовые прототипы, то есть прототипы встроенных объектов. В особенности не надо делать это с прототипами объектов примитивных значений, таких как Array, Boolean, Function, Number, String.