Hallo,
Tja, ich meine wirklich, du solltest es lieber lassen, den Mann zuzumüllen
Mist, dabei bräuchte dein Halbgott doch dringend ne Penisverlängerung und ein Nigerianisches Millionenerbe! ;)
Man könnte auch ne Funktion nehmen die aus nem Literalobjekt {...} ein Funktionsobjekt macht:
...
Das ergibt doch kein "Funktionsobjekt", lediglich ein normales mit den Eigenschaften und Methoden des übergebenen Objekts.
a={a:1};
function toFunction (obj) {
F=function (){};
for (i in obj) { F[i]=obj[i] }
return F;
}
b=toFunction(a);
alert(typeof(b)); // 'function'
Der Ansatz ist aber nicht schlecht, das habe ich hier doch schon vorgestellt mit meiner function oobject () {...}.
alert(typeof(oobject (a))); // 'object';
Gut dass du den Unterschied zw. typeof und constructorof verstanden hast ... *fg*
https://forum.selfhtml.org/?t=168754&m=1102493
Wieso willst du Crockfords Lösung denn partout nicht akzeptieren oder immer eine noch bessere finden?
object() ist IMHO GENIAL!!! Besonders in Kombination mit nach außen gewendeten Konstruktoren (sog. "Makers" in den Kurt/Struppi Dialogen) !!!
Was man austesten sollte sind die Möglichkeiten des Kosntruktorchainings (sollte einfacher werden) und die Simulation von Mehrfachvererbung.
object.prototype aber ist höchstumstritten, da gibt es zwei sich krass gegenüberstehende Schulen, und er geht in dem Artikel überhaupt nicht auf die Problematik ein. Mein Verbesserungsvorschlag war zwar @%$&*... , aber sein Artikel ist dahingehend trotzdem Erklärungsbedürftig.
Insbesondere weil Scripte/Frameworks der anderen Schule dadurch Tabu werden.
Zumindest ein Link zu seiner Stilrichtlinie niemals for-in ohne if-Ratenschwanz zu nutzen wäre angebracht. JS-Lint kritisiert das per Default.
Wenn man das konsequent weiterdenkt müsste es auch Filterfunktionen wie own(), ownAttr(), inAttr(), ...usw oder analog vererbte Iteratoren (für Whileschleifen) geben.
for (i in ownAttr(obj) {...}
while (i in obj.ownAttr()) {...}
und so weiter ...
Hmmm, ich denke er will die Funktion Object(){} , die der Konstruktor von Object ist, so überschreiben dass sie wie object() funktioniert, oder?
Naja, er will einfach die ganze Konstruktor-Denke hinter sich lassen und eben nicht mit Hilfe von Klassen vererben, die durch Konstruktoren definiert sind.
Das hat *Molily* gemeint???
So long!
LanX