Was ist der Unterschied zwischen this.function und prototype.function?

Was ist bei einer einfachen JS-Vererbung der praktische Unterschied in der Basisfunktion zwischen diesen beiden Beispielen? Mit anderen Worten, wann sollte eine Person entscheiden, eine Funktion auf "dieser" anstatt auf dem Prototyp (oder umgekehrt) zu definieren?

Für mich ist das zweite Beispiel leichter zu verdauen, aber wie viel mehr steckt dahinter?

Funktion definiert auf diese:

//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);

Funktion am Prototyp definiert:

//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);

Antworten auf die Frage(1)

Ihre Antwort auf die Frage