Establecer métodos a través del objeto prototipo o en el constructor, ¿diferencia? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Uso de 'prototipo' vs. 'esto' en JavaScript? 14 respuestas

¿Podría explicar la diferencia entre establecer métodos en el constructor y a través del prototipo de objeto? El siguiente código muestra estas dos formas de configurar los métodos:say_hello ysay_bye ambos funcionan bien:

function MessageClass() {
  this.say_bye = function() { alert('see ya'); };
}

MessageClass.prototype.say_hello = function() { alert('hello'); };

x = new MessageClass();
x.say_hello();
x.say_bye();

Respuestas a la pregunta(3)

Su respuesta a la pregunta