2011-04-28 49 views
2

我有了这个代码JavaScript对象平等/身份 - 比较

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' 
     ); 
    }, 

为什么update_questions函数被调用每一次给我任何人都可以解释一下吗?我想,特别是在self.o.questions = questions;之后,如果不相同,返回questionsself.o.questions必须相等。

数据没有变化。

回答

0

您可以通过属性需要循环并加以比较,递归比较任何属性的人的价值是另一个对象。

0

你从发布请求中获得它,虽然对象属性可能相等,但它们是内存中的两个不同的对象,并不相等。您需要比较对象所具有的实际值,而不是对象本身。

这里有一个简单的例子:http://jsfiddle.net/jwhwt/