Cuál es la diferencia entre definir la función por prototipo y la propiedad de clase?

Siga mi código,
Apple es definir la función por prototipo.
Banana es definir función por propiedad de clase.

var Apple = function(){}
Apple.prototype.say = function(){
    console.debug('HelloWorld');
}
var Banana = function(){
    this.say = function(){
        console.debug('HelloWorld');
    }
}

var a = new Apple();
var b = new Banana();

a.say();
b.say();

¿Son estas diferencias?

Respuestas a la pregunta(2)

Su respuesta a la pregunta