2011-04-28 5 views
2

J'ai ce codeégalité objet javascript/identité - comparaison

update_questions: function() { 
     alert("UPDATING!!"); 
    }, 
    poll: function() { 
     var self = this; 

     $.post(
      self.o.site_root+'home/ajax_poll', 
      function(questions) { 
       if (questions != self.o.questions) { 
        self.o.questions = questions; 
        self.update_questions(); 
       } 
       self.o.pending = false; 
      }, 
      'json' 
     ); 
    }, 

Quelqu'un peut-il me expliquer pourquoi la fonction update_questions est appelé à chaque fois? Je pensais, surtout après self.o.questions = questions; que le retour questions et self.o.questions devrait être égal sinon identique.

Les données ne sont pas modifiées.

Répondre

0

Vous devez boucle à travers les propriétés et les comparer, comparer récursive les propriétés dont la valeur est un autre objet.

0

Vous l'obtenez à partir d'une demande de publication et alors que les propriétés des objets peuvent être égales, ce sont deux objets differnet en mémoire et ne seront pas égaux. Vous devez comparer les valeurs réelles des objets et non les objets eux-mêmes.

Voici une démonstration simple: http://jsfiddle.net/jwhwt/