So that the methods don't need to be re-defined for every object.
Object literals don't require you to duplicate any code:
function getObject(val1, val2) {
return {
foo: val1,
bar: function() {
return val2;
}
};
}
Or why. None of the examples seem like constructors provide any advantage over literals.