Qual é a diferença entre this.bla para Object.prototype.bla

Digamos que eu tenha este código:

(function(global) {
    function Bar(foo) {
        this.foo = foo;
        return this;
    }

    Bar.prototype.getFoo = function() {
        return this.foo;
    };

    Bar.prototype.setFoo = function(val) {
        return (this.foo = val);
    };
})(this);

Qual é a diferença entre criar funções comosetFoo comprototype e apenas fazendo assim:

function Bar(foo) {
    this.getFoo = function() {
        return this.foo;
    };
}

Eu sei o que é protótipo e o que isso significa, eu simplesmente não consigo entender por que algumas pessoas atribuem funções com protótipo, porque se eu as designar com isso, elas estarão disponíveis também toda vez que eu criar uma nova instância de Bar.

questionAnswers(4)

yourAnswerToTheQuestion