Heim > Artikel > Web-Frontend > Warum ist window.console.log nur verfügbar, wenn Entwicklertools in IE9 geöffnet sind?
Das schwer fassbare Console.log von IE9: Eine bedingte Präsenz
In Internet Explorer 9 stellt die Existenz von window.console.log ein faszinierendes Rätsel dar . Dieser Artikel befasst sich mit der rätselhaften Natur dieser Funktion und untersucht die Umstände, die ihre Präsenz und ihr Verhalten bestimmen.
Window.console.log in IE9: Ein unvollständiges Bild
Innerhalb der strengen Grenzen von IE9 wird der Funktion window.console.log nur dann Zugriff auf den globalen Bereich gewährt, wenn der Vorhang der Entwicklertools für eine bestimmte Registerkarte ordnungsgemäß geöffnet wird. Diese vorübergehende Manifestation ist jedoch nicht statisch. Während Sie durch das grenzenlose Web navigieren, bleibt das Konsolenobjekt ein ständiger Begleiter, vorausgesetzt, Ihr Entwicklertools-Fenster wird nicht kurzerhand geschlossen. Aber leider erfordert ein neuer Tab einen neuen Pakt mit den Entwicklertools, um die schwer fassbare Konsole zu enthüllen.
Warum No Harmony mit Apply and Call?
Das Rätsel vertieft sich, wann Wir berücksichtigen das eigenartige Fehlen von window.console.log.apply und window.console.log.call. Diese Uneinigkeit ergibt sich aus der einzigartigen Natur des Konsolenobjekts als Hostobjekt, das sich stolz dafür entscheidet, nicht wie seine ECMAScript-Gegenstücke von Object zu erben oder seine Methoden von Function abzuleiten. Leider hat die unvollkommene Übernahme der DOM-Objektkonformität durch IE9 die Entwicklertools in einen Zustand der Isolation versetzt und der gleichen Segnungen beraubt, die ihren Begleitern zuteil wurden.
Ein Hoffnungsschimmer: Bind to the Rescue
Trotz dieser Einschränkungen taucht aus den Tiefen von Function.prototype.bind ein Hoffnungsschimmer auf. Diese magische Beschwörung befähigt uns, eine harmonische Verbindung zwischen Konsolenmethoden und Function.prototype-Methoden herzustellen. Schauen Sie sich den folgenden Trick an:
var log = Function.prototype.bind.call(console.log, console); log.apply(console, ["this", "is", "a", "test"]); //-> "thisisatest"
Und da haben Sie es, die Kunst, Konsolenmethoden mit einer Prise Function.prototype-Zauberei aufzurufen.
Das obige ist der detaillierte Inhalt vonWarum ist window.console.log nur verfügbar, wenn Entwicklertools in IE9 geöffnet sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!