2013-06-05 6 views
5

Was ist der Unterschied zwischen Javascript-Fenster und jquery $ (Fenster)?

habe ich versucht, in der Chrome-Konsole und ich bekomme diese: enter image description here

So würde ich schließen, ist „nur“ ein Fensterobjekt in einem jQuery-Objekt in einer Weise gewickelt, dass dann kann ich jQuerys Funktionen auf sie verwenden (wie Höhe(), Breite(), etc ...)

Ich habe versucht, googeln und stapelnüberlaufen :) OFC, aber kein Glück.

+9

Ihre Schlussfolgerung ist ziemlich richtig. Keine weitere Erklärung benötigt meiner Meinung nach. – nnnnnn

+0

In der Tat haben Sie Recht. – Igarioshka

+1

Etwas ähnliches auch [jQuery $ (this) vs this] (http://stackoverflow.com/questions/1051782/jquery-this-vs-this)! –

Antwort

4

Wenn Sie $(window) schreiben, sollten Sie wissen, dass dass Stück Code auf dem JS Motor laufen soll . Haben Sie sich jemals gefragt, warum jQuery-Objekte alle Klammern haben? Dies liegt daran, dass $ ein Funktionsobjekt ist. Im Grunde rufen Sie die $ Funktion auf und übergeben das native globale oder window Objekt als Argument.

Wenn Sie den jQuery-Quellcode durchsuchen, sehen Sie, dass er dieses Objekt an viele interne Funktionen weiterleitet und am Ende ein jQuery-Wrapper-Objekt zurückgibt.
Also ja, deine Annahmen sind ziemlich richtig.

0

Fenster ist ein globales Objekt und hat keine Beziehung zu einer Bibliothek von Drittanbietern. aber $ (Fenster) gibt ein jQuery-Objekt zurück. Sie haben recht, dass es nichts anderes als ein Wrapper ist, aber es kommt mit allen möglichen jQuery-Goodies. Wir können es wie normale jQuery-Objekt verwenden wir seine Childs zugreifen können, können Daten wtih sie assoziieren etc etc.

+0

'window' ist kein DOM-Objekt, es ist ein zirkulärer Verweis auf das globale names-Objekt. Schreiben Sie einfach ein Skript, das das tut: 'console.log (this === window);', es wird wahr gemeldet. Wie wird: 'console.log (this.Fenster === Fenster === diese) 'in einem einfachen' 'dom, in jedem Fall –

+0

aah wahr das ist, danke Elias –

+0

@EliasVanOotegem - Ihr zweites Beispiel' console.log (this.window === Fenster === dies) 'logs' false'. – nnnnnn

0

Sie sind ture

Fenster, das ein jQuery-Wrapper ist das globale Fenster-Objekt enthält. Die Absicht hier war, eine lokal begrenzte Fenstervariable zu erstellen, die mir sofortigen Zugriff auf jQuery-Methoden wie width(), height(), scrollLeft() und scrollTop() geben würde.

+1

Sie haben die Handlung verpasst, denke ich: Wie können Sie eine lokal begrenzte Variable von _the global object_ erstellen? –

+0

@EliasVanOotegem - 'var localVariable = Fenster;' würde es tun, nicht wahr? Dennoch macht diese Antwort keinen Sinn, da der Gültigkeitsbereich der Variablen nichts mit den verfügbaren Methoden zu tun hat. – nnnnnn

0

Das Objekt window repräsentiert das Fenster selbst. Sie finden weitere Erläuterungen here. Von dem, was Sie oben beschreiben, scheint es, dass Sie auf die document Eigenschaften statt window Eigenschaften zugreifen möchten. Sie können die Eigenschaften Länge zugreifen, Höhe etc. wie folgt:

  • document.height (reine JavaScript) oder $ (document) .height() (jQuery)
  • document.width (reine Javascript) oder $ (document) .width() (jQuery)

weitere document Eigenschaften finden here.

+0

Warum nicht '$ (window) .height()'? Gibt die Höhe des Ansichtsfensters des Browsers an, die (in der Regel) nicht mit der Höhe des Dokuments übereinstimmt. – nnnnnn

+0

Sie können das auch tun, Sie erhalten nur ein anderes Ergebnis, weil window.height die Höhe des Fensters anstelle des Browsers erhält. Sie erhalten also eine niedrigere Nummer mit window.innerHeight als document.height. Die Verwendung läuft ziemlich genau auf das hinaus, was Sie erreichen möchten. – user2424941

Verwandte Themen