Всяка функция в JS може да се ползва като конструктор на обект - Class. Прототипа на класа е обект, който дефинира общи функции и методи за инстанциите на класа. Когато се опиташ да достъпиш метод/свойство на обект, първо проверява дали е налично в обекта, ако е така го ползва, ако не - проверява дали е налично в прототипа на класа, чиято инстанция е обекта и го ползва от там(ако е налично), като вика метода с контекст текущата инстанция. Проблем при този модел е, че например ако имаш масив в прототипа на класа, той ще се ползва от всички обекти, инстанции на този клас. Оптималния вариант е да ползваш прототипа само за общите методии, а всички свосйтва да пресъздаваш в конструктора. В общи линии е това, надявам се помага : )