Zugriff verweigert, um auf Eigenschaft 'toString' zuzugreifen

8

Ich versuche, einen generischen Weg zu finden, den Namen von Konstruktoren zu bekommen. Mein Ziel ist es, ein Convention-over-Framework für KnockoutJS zu erstellen

Meine Idee ist, über alle Objekte im Fenster zu iterieren, und wenn ich den Konstruktor finde, nach dem ich suche, kann ich den Index verwenden, um den Namen des Konstruktors zu erhalten

Der Code sofar

%Vor%

Das Problem ist, dass ich eine Permission denied to access property 'toString' Exception bekomme, und ich kann nicht einmal versuchen, catch, also sehen, welches Objekt das Problem verursacht

Geige Ссылка

Endgültige Version in dieser Geige Ссылка

Hier nach dem Embryo meines Convention over configuration plugins suchen Ссылка

    
Anders 13.12.2012, 17:02
quelle

1 Antwort

5
  • Edit2:

JSFiddle

Dies löst alles außer einer Sache: var MyApp = {}; nicht fügt es zu window-object hinzu. Wenn Sie dies in window.MyApp = {}; ändern, funktioniert es (auch innerhalb eines IFrames) vollständig.

  • Edit1:

JSFiddle

Zum Hinzufügen des Arrays durch Festlegen des Schlüsselnamens muss der Schlüsselname eine Zeichenfolge sein, damit Javascript automatisch aufgerufen wird. toString() für den vorgeschlagenen Schlüsselnamen, der bei bestimmten Objekten fehlschlägt. Verwenden Sie stattdessen .push (), um Elemente eines beliebigen Typs zu einem Array hinzuzufügen und dann .indexOf() , um zu prüfen, ob es bereits existiert.

Beachten Sie, dass jsFiddle immer noch unterbrochen wird, weil er in einem iframe platziert wurde. Öffnen Sie in einem neuen Tab , um das zu lösen.

Meine vorherige Antwort (die sich als ungültig erwies, als ich versuchte, sie in Ihrem jsFiddle zu überprüfen):

Sie müssen überprüfen, ob der Konstruktor ein exaktes Objekt ist. Wenn es dann .toString () aufruft, wird es eine Sicherheitsausnahme verursachen, die ich etwas schwer zu debuggen fand. Hier ist eine Funktion, die ich verwende, um den Typ eines Objekts in einem Var-Dumper zu erhalten, den ich benutze.

%Vor%     
Martijn Hols 13.12.2012, 17:38
quelle

Tags und Links