https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function
Warum ich die nicht mit for (i in Function) durchlaufen kann, kapiere ich grade nicht.
http://es5.github.io/ Suche nach [[Enumerable]]
http://es5.github.io/#x8.6.1
Testen mit:
$ Function.prototype.propertyIsEnumerable('bind')  
false  
  
$ Object.getOwnPropertyDescriptor(Function.prototype, 'bind')  
Object {value: function, writable: true, enumerable: false, configurable: true}  
Hier zeigt sich, dass die Eigenschaft nicht enumerable ist.
Test = function () {
this.a = "b";
}
MyTest = new Test();
console.log(typeof Test); //function
console.log(typeof MyTest); //object
  
Was daran liegt, dass der typeof-Operator ziemlich kaputt ist. Das sagt nicht aus, dass Funktionen keine Objekte sind… typeof gibt immer 'object' zurück, wenn es sich nicht um einen Primitive, eine Funktion oder undefined handelt.  
  
> ~~~javascript
Test = function () {  
>     this.a = "b";  
> }  
> Test.b = "c";  
> MyTest = new Test();  
> console.log(MyTest.b); // undefined  
> console.log(Test.b); // c  
> 
MyTest erbt natürlich nicht Eigenschaften ihres Konstruktors (Test), sondern nur die ihres Prototyps (Test.prototype).
var instanz = new Konstruktor();  
// Eigene oder prototypisch vererbte Eigenschaft:  
console.log(instanz.eigenschaft);  
// Eigenschaft des Konstruktors, dasselbe wie Konstruktor.eigenschaft:  
console.log(instanz.constructor.eigenschaft);
Aber was "habe" ich davon, dass meine Funktion Test noch die Eigenschaft b mit sich bringt, also fürs praktische Programmieren?
Solche »statischen Klassenmethoden« nutzt man in Javascript genauso wie in anderen Sprachen.
var User = function(attributes) {…};  
User.from = function (json) {  
  var obj = JSON.parse(json);  
  return new User(obj);  
};
Oder um Konstanten unterzubringen:
User.USER_ROLE = 0;  
User.MODERATOR_ROLE = 1;  
User.ADMIN_ROLE = 2;
(aus den Fingern gesaugt)
Mathias