Hallo,
var foo =
{
bar : function(text)
{
window.alert(text);
}
}
var foobar = new foo();
Da verwechselst du zwei Sachen.
»new« bildet Instanzen, indem es Funktionen aufruft. Man kann new funktionsobjekt schreiben, sonst nichts. Nur Funktionen können neue Instanzen konstruieren:
function Konstruktor () {}
var instanz = new Konstuktor();
Objektliterale haben damit erstmal nichts zu tun. Sie sind eine Schreibweise, um Objekte vom allgemeinsten Typ Object zu notieren. Ein so notiertes Objekt kannst du zwar durch Kopieren aller Eigenschaften vervielfältigen, aber nicht mit new instantiieren.
Aber in deinem Beispiel musst du doch weder das Objekt vervielfältigen, noch eine Instanz bilden, sondern kannst direkt foo.bar aufrufen. Der Sinn von solchen Object-Objekten ist einfach, dass sie zusammengehörige Werte als Container gruppieren. Das hat mit Objektorientierter Programmierung wenig zu tun, das ist eher eine Art Namespace, weil es in JavaScript keine richtigen Namespaces gibt.
Mathias