Basicamente lo que hace el objeto prototype es aumentar funcionalidades en el nuevo "tipo de dato" que estas creando. Este nuevo tipo de dato parte del objeto Function, por lo que el tipo de dato nuevo tendra los mismos atributos y metodos que esten declarados en el objeto prototype de Function.
En el ejemplo que te di, estoy creando un tipo de dato Perro. El objeto prototype me permite agregarle los metodos y propiedades que ese tipo de dato va a tener. Por lo que todas las instancias tendran los mismos objetos y propiedades que las que estan declaradas en prototype.
Te dejo estos links adicionales para que los leas.
http://dmitrysoshnikov.com/ecmascrip...eneral-theory/ http://dmitrysoshnikov.com/ecmascrip...ript-the-core/
Saludos.