равенство / идентичность объекта javascript - сравнение - PullRequest
2 голосов
/ 28 апреля 2011

У меня есть этот код

    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;, что возвращаемые questions и self.o.questions должны быть равны, если не идентичны.

Данные не меняются.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

Вам нужно пройтись по свойствам и сравнить их, рекурсивно сравнивая любые свойства, значением которых является другой объект.

0 голосов
/ 28 апреля 2011

Вы получаете его из пост-запроса, и хотя свойства объектов могут быть одинаковыми, они являются двумя объектами в разных сетях и не будут одинаковыми. Вам необходимо сравнить фактические значения, которые имеют объекты, а не сами объекты.

Вот простая демонстрация: http://jsfiddle.net/jwhwt/

...