¿Cuál es la diferencia entre this.function y prototype.function?

Dada la simple herencia de JS, ¿cuál es la diferencia práctica en la función básica entre estos dos ejemplos? En otras palabras, ¿cuándo debería una persona elegir definir una función en "esto" en lugar de en el prototipo (o al revés)?

Para mí, el segundo ejemplo es más fácil de digerir, pero ¿cuánto más hay para esto?

Función definida en esto:

//base
var _base = function () {
    this.baseFunction = function () {
        console.log("Hello from base function");
    }
};
//inherit from base
function _ctor() {
    this.property1 = "my property value";
};
_ctor.prototype = new _base();
_ctor.prototype.constructor = _ctor;
//get an instance
var instance = new _ctor();
console.log(instance.baseFunction);

Función definida en el prototipo:

//base
var _base = function () {};
_base.prototype.baseFunction = function () {
    console.log("Hello from base function");
}
//inherit from base
function _ctor() {
    this.property1 = "my property value";
};
_ctor.prototype = new _base();
_ctor.prototype.constructor = _ctor;
//get an instance
var instance = new _ctor();
console.log(instance.baseFunction);

Respuestas a la pregunta(1)

Su respuesta a la pregunta