функции-конструктора (либо добавление в класс) и добавлением метода напрямую в функцию-конструктор? Я понимаю, что в первом случае методы будут в прототипе, а во втором будут принадлежать самому объекту. Почему в большинстве случаев методы добавляют именно в прототип?
В js, каждая функция/метод - это объект. Когда ты добавляешь метод напрямую в функцию-конструктор, то для КАЖДОГО нового экземпляра , созданного этим конструктором, будет создаваться в памяти еще и новый объект - метод. А когда ты записываешь этот метод в прототип, то все инстансы функции - конструктора будут ссылаться на 1 метод в памяти.
Допустим у тебя конструктор создает объект с свойтвом name и методом getName. И ты создаешь 1000 объектов. Но на самом деле, ты создашь 2000 объектов, так для каждого и них, в памяти создастся "персональный" getName. А вот если ты вынесешь getName в prototype, то все 1000 объектов, будут ссылаться на 1 общий getName , который хранится для всех в prototype
Логично, огромное спасибо за объяснение!
Обсуждают сегодня