Hallo,
Dachte immer Function ist Function, und Object ist Object. Sogar typeof unterscheidet sie ganz brav. Die Grenze scheint aber eher fließend zu sein oder gar nicht zu existieren...
Alles ist eine Instanz von Object. Object ist der oberste Konstruktor aller JavaScript-Objekte (und dessen Prototyp der Prototyp aller Objekte).
Was die Unterscheidung von typeof angeht, so wird zwischen Objekten unterschieden, die die interne Methode [[Call]] kennen oder nicht, und das trifft auf Funktionsobjekte zu. (typeof gibt die internen Typen nicht ohne Nivellierung wieder und ist ist bloß zur Unterscheidung von Primitives und Objects interessant.)
Allerdings verstehe ich nicht, warum Function.prototype.begetObject jetzt alles besser macht. Der Sinn von Object.prototype ist ja, dass ich einfach objekt.begetObject() schreiben kann. Wozu allen Funktionsobjekten das anhängen? Dann kann ich doch nicht einfach { a : "b" }.begetObject() schreiben, was ja der Sinn der Sache war. Dann könnte ich die Methode auch ans globale Host-Objekt window oder an den Object-Konstruktor (nicht dessen prototype) kleben, weil ich sie ohnehin umformen muss, sodass sie das Objekt als Parameter enthält, anstatt dass sie über this darauf zugreifen kann.
Mathias