JavaScript Fensterobjekt immer zugänglich?

8

Wir sehen diesen Ansatz die ganze Zeit:

%Vor%

Wenn ich das obige Snippet studiere, frage ich mich, warum ein global zugängliches Objekt wie window als Argument für eine Funktion übergeben wird. Könnte es sein, dass:

  1. Der Entwickler kann nicht zu 100% sicher wissen, dass auf das Fenster innerhalb des lokalen Funktionsumfangs zugegriffen werden kann.
  2. Ist eine gute Übung, weil Sie anderen Entwicklern, die Ihren Code lesen, Ihre Absichten klar machen.
  3. Sie haben gesehen, dass John Resig es so gemacht hat, dass es Finger lecken muss!

Was denkst du?

    
ChrisRich 15.08.2012, 00:19
quelle

3 Antworten

4

Es macht den Code tragbarer.

Sie können den Code kopieren und in eine Umgebung einfügen, in der kein globales Fensterobjekt definiert ist (z. B. Knoten), aber er ist API-kompatibel für all die Dinge, die Ihnen in Ihrem Code wichtig sind. Dann müssen Sie nur das an die Funktion übergebene Argument ändern.

Eine kleine Änderung, die den Code klarer macht:

%Vor%     
Matt York 15.08.2012 00:24
quelle
2

Ich kenne einige mögliche Gründe für den Code, nach dem Sie gefragt haben:

  1. Das Erstellen von Verknüpfungen für document , location und navigator in lokalen Variablen ist möglicherweise eine geringfügige Leistungsverbesserung und verringert die Tipparbeit.

  2. Die Übergabe von window an die selbstausführende Funktion kann bewirken, dass Verweise auf window etwas besser sind als die Verwendung aus dem globalen Bereich.

  3. Es gibt einige Ausführungsumgebungen für Javascript (nicht in einem Browser), in denen das globale Objekt nicht window heißt, daher könnte der Code leichter angepasst werden. Aber dieser Grund scheint ein bisschen schwierig zu sein, da Code, der für einen Browser geschrieben wurde, sehr wahrscheinlich auch andere Browser-Fähigkeiten verwendet.

jfriend00 15.08.2012 00:24
quelle
0
%Vor%
  1. Normalerweise ist der oberste Name der Name, den Sie ihm nennen möchten, während der untere Teil versichert, was er darstellen soll. Wenn Sie $ oben haben, bedeutet dies, dass Ihr gesamter jQuery-Code (in diesem Fall) bei jQuery verbleibt. Die Verwendung für Fenster / Fenster stellt lediglich sicher, dass keine andere Definition des Fensters seine ursprüngliche Absicht als "Fenster" ändert.
  2. Es ist definitiv eine Best Practice und eine kontrollierte Art und Weise zu erlauben, was Sie wollen innerhalb Ihrer anonymen Funktion / Namespace.
  3. Einer der Gründe! Resig ist der Mann.
quelle

Tags und Links