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 :

Pourquoi une différence d’exécution


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Points : 105
    Points
    105
    Par défaut Pourquoi une différence d’exécution
    Bonjour
    J'apprend actuellement le JavaScript en étudiant le tutorial de MDN ( Mozilla)
    Dans la partie "Définir des accesseurs et des mutateurs (getters et setters)"
    j'utilise le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     var d = Date.prototype;
    Object.defineProperty(d, "annee", {
      get: function() { return this.getFullYear() },
      set: function(y) { this.setFullYear(y) }
    });
     
    var ajd = new Date();
    console.log(ajd.annee); 		
    ajd.annee = 2001; 			
    console.log(ajd);
    dans l'éditeur JS de firebug cela provoque une erreur TypeError: can't redefine non-configurable property "annee"

    si j'inclus ce code dans une page Html pas de Pb cela s'exécute correctement

    Pourquoi cette différence ???

  2. #2
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Je pense que l'erreur doit survenir à partir de la deuxième exécution.
    La première fois, la propriété "annee" est créée avec "configurable=false" par défaut.
    La deuxième fois que le code est exécuté, "Object.defineProperty" échoue car la propriété avait déjà été créée (et existe toujours en mémoire) avec l'option non configurable.
    Soit vous devez recharger à chaque test, soit vous pouvez ajouter temporairement "configurable=true".

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Points : 105
    Points
    105
    Par défaut
    Merci
    OK en rajoutant l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Object.defineProperty(d, "annee",{
      configurable: true,,
    cela fonctionne correctement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pourquoi mon action dans une modal ne s'exécute pas ?
    Par nicolas.carron dans le forum Seam
    Réponses: 3
    Dernier message: 10/01/2011, 22h23
  2. Pourquoi y a-t-il une différence?
    Par Nixar dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 19/11/2008, 15h19
  3. Réponses: 13
    Dernier message: 24/07/2006, 13h15
  4. Réponses: 1
    Dernier message: 14/06/2006, 14h25
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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