IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Les objets window et document


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut Les objets window et document
    Je débute javascript en auto didacte.

    J'ai dû me rendre compte assez vite que Javascript n'est pas Java.

    On ne peut pas instancier un objet à partir d'une classe. Mais Javascript possède des objets prédéfinis dotés de méthodes, éventuellement des propriétés.

    Ma question est de savoir à quoi correspond l'objet window et à quoi correspond l'objet document. Parce que j'ai l'impression que c'est la même chose.

    Un peu d'explications ne me ferait pas de mal.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    document est un attribut de window (window.document). Mais l'objet window est appelé implicitement en javascript; exemple les fonctions alert() et confirm() sont des alias de window.alert() et window.confirm().

    A+.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    document est un attribut de window (window.document). Mais l'objet window est appelé implicitement en javascript; exemple les fonctions alert() et confirm() sont des alias de window.alert() et window.confirm().

    A+.
    Alors, document n'est pas un objet ? curieux...

    regardez ceci :

    Description
    L'objet document est probablement l'un des objets les plus importants du modèle objet javascript.
    Il permet d'accéder à tous les éléments affichés sur la page, de contrôler les saisies, de modifier l'apparence et le contenu.
    J'ai pensé que document était un sous-objet de l'objet window

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Personne ne t'a dit que document n'était pas un objet...
    En JavaScript, une propriété d'un objet peut être de n'importe quel type, donc par exemple un autre objet.
    Ce qu'Andry te dit, c'est que dans la structure d'une page Web, l'objet le plus haut est l'objet window qui a une propriété qui s'appelle document qui est elle-même un objet !

    La différence essentielle est que les propriétés et méthodes de l'un et de l'autre ne sont pas les mêmes.

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Tout en Javascript peut-être assimilé à un objet excepté quelques types primitifs comme les nombres, strings etc... Par exemple les arrays et les fonctions sont des objets et on peut leur assigner des propriétés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var a = [1,2];
    a.b = 3;
     
    function f(){ return "foo"; }
    f.g = function(){ return "bar"; }
    Il existe un ensemble d'objets par défaut pour toute page Web. window et document en font partie. On peut s'imaginer que window représente la fenêtre du navigateur tandis que document est la page qu'il contient. Lorsqu'un objet est déclaré par le mot-clé var à l'intérieur d'une fonction, il appartient au scope local de celle-ci et ne sera pas accessible en dehors.
    En dehors de toute fonction ou en omettant le mot-clé var, l'objet sera défini dans le scope global correspondant à l'objet window. Il faut éviter de créer trop de variables globales, car l'objet window a déjà énormément de propriétés que l'on peut réaffecter par erreur ; c'est pourquoi je conseille personnellement de n'utiliser qu'une seule variable globale par application/librairie et de s'en servir à la manière d'un namespace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    (function(app){
     
         var variableLocale = "foo";
         app.variableLiee = "bar";
         variableGlobale = "burp"; // <-- attention, variable globale
     
    })(window.app = window.app || {});

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour puisque tu début c'est l'occasion de mettre les choses au clair.

    javascript n'est pas java c'est clair.
    Java est un langage à base de classes
    Javascript est un langage à base de prototypes.

    on peut donc instancier des objet en javascript (à partir d'un prototype)

    autre point que tu as levé implicitement la notion d'objet
    Javascript connait nativement la notion d'objet (cela fait partit de la définition du langage)
    Java ne connait que la notion d'instance.
    certain design pattern créer pour palier ce manque dans les langage à base de classe n'ayant pas de notion d'objet autre que les instances, nont donc pas lieu d'être en javascript.

    var a = {}; définit le singleton on n'a donc pas besoin de mecanisme complexe.


    un point important Javascript NE DEFINIT PAS LES OBJETS document et window
    Javascript définit les types de base
    Boolean, Number, String
    il définit deux type particulier qui ne prenent chacun qu'une seule valeur
    le type Null qui vaut null et le type Undefined qui vaut undefined
    Javascript ne définit aucun objet par defaut.
    pas d'entre sortie pas de console pas de window pas de document
    absolument rien.
    il est donc impossible d'interagir avec lui

    cela peut paraitre étrange mais c'est comme si en Java tu n'avait aucune des librairies de base
    si tu regarde bien tu te retrouve sans entree/sortie sans UI sans ...

    ce choix vien du fait que javascript est fait pour être adossé à un hôte.
    dans le cas qui t'interesse l'hôte est le navigateur mais ce peut être tout type d'application.

    une application embarquée dans une carte d'un robot sous-marin n'a à priori pas besoin d'IHM
    alors qu'un navigateur est au contraire un outil qui ne fait que ça.

    c'est donc l'hôte qui définit les objets permétant à javascript d'interagir avec lui.

    pour le navigateur, l'hôte va donc ajouter trois objets navigator, window, et document.

    navigator est un objet qui représente le navigateur dans ton javascript
    windows est la fenêtre courante du navigateur
    document est le document courant qui est dans la fenêtre

    attention window est à prendre au sens large. en effet un fenêtre (est un cadre pouvant contenir un document)
    les navigateurs texte ont aussi un objet window alors qu'on est en mode texte (telnet)

    une page contenant des frame ou iframe donne lieu à autant d'objet window que de frame + 1 pour la page elle même.

    il existe un autre objet très courant dans les navigateur c'est l'objet console (attention ils existe dans les navigateurs moderne)

    console est un objet qui permet d'afficher des textes dans la console js

    le langage est normalisé mar l'ECMAScript
    alors que les élément du navigateur le sont par le W3C



    A+JYT

Discussions similaires

  1. Insérer une variable dans l'objet windows.document
    Par kryogen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/06/2009, 15h24
  2. [COM] Existe-t'il un document qui reprend les objets COM de Excel ?
    Par beegees dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/02/2009, 09h43
  3. Réponses: 1
    Dernier message: 07/07/2008, 09h00
  4. Réponses: 2
    Dernier message: 11/03/2007, 17h51
  5. Trouver tous les objets d'un certain type dans un document?
    Par kobe dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 03/11/2005, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo