Consider the following to JavaScript snippets:
function foo() {
this.bar = function() { };
}
// or... (if we used an empty constructor function)
foo.prot
I think I'm answering the right question here, otherwise let me know.
The difference is that using prototype results in only 1 instance.
So, for example, baz.bar in one instance is the same as baz.bar in another. They will share values within the 'foo' instance:
function foo() {
var x = 0;
this.bar = function() {};
this.getVal = function() {
return x;
}
this.setVal = function(val) {
x = val;
}
}
function baz() {}
baz.prototype = new foo();
var a = new baz(),
b = new baz();
a.setVal("1234")
console.log(b.getVal()); // prints '1234'
http://jsfiddle.net/jonathon/7GtRD/
If a and b were directly calling 'foo', then they wouldn't be sharing the values within the foo. However, this is where it differs slightly between setting this.bar and using the prototype to create bar.
Using the prototype would create one instance of bar. So a.bar will be the same as b.bar. If you do it the other way, they will be two different functions (doing the same thing).