Warum Top-Level-Funktionen als Methoden des Fensters in JavaScript erstellt werden? [geschlossen]

8

Wenn wir eine benannte Funktion auf oberster Ebene in Javascript definieren, wird sie zu einer Methode des Objekts window . Was ist der Grund für diese Designentscheidung?

    
Geek 27.05.2013, 18:53
quelle

2 Antworten

4

Javascript läuft immer in einem bestimmten globalen Kontext. In einer Browser-Umgebung, bei der es sich um das window-Objekt handelt, fügen Sie es bei der Definition eines globalen Objekts tatsächlich zu window ...

hinzu

Hier ist eine weitere hervorragende Stackoverflow-Antwort, die erklärt, warum das so ist: Ist das Fenster in Javascript wirklich global?

    
Dory Zidon 27.05.2013, 18:56
quelle
3
  

Was ist der Grund für diese Designentscheidung?

Ich kann das nicht beantworten, wir müssen den Typen fragen, der die Sprache entworfen hat, und das Komitee, das seine Spezifikation pflegt. Aber vielleicht gibt Ihnen das einige Einsichten: intern werden Variablen (lokal oder global) immer in "Lexical Environment" -Objekten gespeichert. Sie sind also immer Eigenschaften und besitzen sogar eigene Eigenschaften (um sie als schreibgeschützt, nicht löschbar usw. zu kennzeichnen).

Die Umgebungsobjekte werden im Browser-JavaScript nicht angezeigt, außer für das globale Objekt (wie in den Kommentaren von sclint hervorgehoben wird, erfordert ECMAScript nicht, dass das globale Variablenobjekt offengelegt wird, das liegt an der Implementierung.)

Es kommt vor, dass entschieden wurde, dass das globale Objekt mit dem Fensterobjekt in Browsern identisch ist. Warum? Auch das kann ich nicht beantworten. Sie haben gerade entschieden, keinen dedizierten global (oder was auch immer) Bezeichner zu verwenden.

    
bfavaretto 27.05.2013 19:29
quelle

Tags und Links