Defining your methods/properties in the prototype will allow them to be shared between instances. Defining them in the constructor creates a new one for each instance.
You don't have to use the prototype... Use it if you want to share data. Typically you put methods on the prototype (because they don't change) and you set values on the instance itself.
One thing to beware, that often causes bugs, is defining mutable properties on the prototype. I've posted about this in Understanding prototypal inheritance
function Class(){}
Class.prototype = { obj : {}};
var a = new Class();
a.obj.x = 5;
var b = new Class();
console.log(b.obj.x); // 5
So you typically should define objects in the constructor (if you don't want them shared);
function Class(){
this.obj = {};
}
var a = new Class();
a.obj.x = 5;
var b = new Class();
console.log(b.obj.x); // undefined
Note that this is not a problem for primitives, because they can't be mutated, setting them on an instance just shadows the value from the prototype.
function Class(){}
Class.prototype = { val : 5};
var a = new Class();
console.log(a.val); // 5
a.val = 6;
console.log(a.val); // 6
var b = new Class();
console.log(b.val); // 5