Warum sind myarray instanceof Array und myarray.constructor === Array beide falsch, wenn sich myarray in einem Frame befindet?

7

Der folgende Code alarmiert also zweimal falsch:

%Vor%

Wenn auf der Seite namens "myframe" ein iframe vorhanden ist, der ein Array namens "myarray" enthält. Wenn das Array auf die Hauptseite verschoben wird (im Gegensatz zum Iframe), wird der Code zweimal wie erwartet als wahr gemeldet. Weiß jemand, warum das ist?

    
zjmiller 24.06.2011, 20:13
quelle

2 Antworten

18
%Vor%

Lange Erklärung hier warum .constructor scheitert mit Frames.

  

Die Probleme treten auf, wenn es um Scripting in DOM-Umgebungen mit mehreren Frames geht. Kurz gesagt, Array-Objekte, die innerhalb eines Iframes erstellt wurden, teilen [[Prototyp]] 's nicht mit Arrays, die in einem anderen Iframe erstellt wurden. Ihre Konstruktoren sind unterschiedliche Objekte und daher können sowohl instanceof als auch Konstruktorprüfungen fehlschlagen:

    
epascarello 24.06.2011, 20:20
quelle
4

Die beiden Fenster erstellen jeweils ihre eigene globale Skriptumgebung.

Der Array-Konstruktor von eins ist nicht das gleiche Objekt wie das andere.

%Vor%     
kennebec 24.06.2011 20:43
quelle

Tags und Links