Moin.
Mein Problem: der IE unterstützt die prototype-Eigenschaft nicht, wenn der zugewiesene Prototyp ein 'besonderes' Objekt ist. Z.B.:
function Func() {}
Func.prototype = document;
var obj = new Func();
document.writeln(typeof obj.writeln);
obj.writeln('es geht!');
Meine erste Idee war nun, über eine for...in-Schleife alle Eigenschaften des Prototyps durchzugehen und diese gegebenenfalls explizit zu setzen. Leider war dies nicht zielführend, da einige 'besondere' Objekteigenschaften nicht durchlaufen werden. Z.B.:
for(var slot in document)
document.writeln(slot); // writeln taucht in der Ausgabe nicht auf!
Wenn man die Eigenschaft jedoch explizit setzt, funktioniert es:
function Func() {}
Func.prototype = document;
var obj = new Func();
if(obj['writeln'] !== document['writeln'])
obj['writeln'] = document['writeln'];
document.writeln(typeof obj.writeln);
obj.writeln('es geht!');
Hat jemand eine Idee, wie man das automatisieren kann, oder gibt es keine andere Möglichkeit, als jede benötigte Eigenschaft explizit zu überprüfen?
Christoph
PS: Ziel der Übung ist eine Realisierung von Javascript-Bibliotheken; im Firefox scheint auch alles wie gewünscht zu klappen, im IE dank obigem Problem nur, wenn benötigte Objekteigenschaften explizit gestezt werden