Christoph: 'besondere' Objekte im IE klonen

Beitrag lesen

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