Q:

What happens to properties on a constructor function?

Suppose there is:
function someConstructor(){
   // initialize
}
someConstructor.prop = {test:'test'};

var obj1 = new someConstructor();
var obj2 = new someConstructor();

My guess would be that there is still only one copy of prop available via someConstructor.prop for obj1 and obj2 available via someConstructor.

A:

Prototype is used to make sure that 1 and only 1 object is there for all instances. However those instances may override that prototype with their own objects. In firefox at least, setting Test.opts does not allow o1 or o2 to inherit it. But setting Test.prototype.opts does.
Try the following:
var Test = function () {};
Test.opts = {helo: "hello"};

var o1 = new Test();
var o2 = new Test();
console.log( o1.opts ); // undefined
o1.opts = {helo: "bye"};
console.log( o2.opts ); // undefined

Test.prototype.opts = {helo: "hello"};
console.log( o1.opts ); // Object { helo: "bye" }
console.log( o2.opts ); // Object { helo: "hello" }

