util.equals = function()

in broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js [444:531]


        util.equals = function (object1, object2)
        {
            if (object1 && object2)
            {
                if (typeof object1 != typeof object2)
                {
                    return false;
                }
                else
                {
                    if (object1 instanceof Array || typeof object1 == "array")
                    {
                        if (object1.length != object2.length)
                        {
                            return false;
                        }

                        for (var i = 0, l = object1.length; i < l; i++)
                        {
                            var item = object1[i];
                            if (item && (item instanceof Array || typeof item == "array" || item instanceof Object))
                            {
                                if (!this.equals(item, object2[i]))
                                {
                                    return false;
                                }
                            }
                            else if (item != object2[i])
                            {
                                return false;
                            }
                        }

                        return true;
                    }
                    else if (object1 instanceof Object)
                    {
                        for (propName in object1)
                        {
                            if (object1.hasOwnProperty(propName) != object2.hasOwnProperty(propName))
                            {
                                return false;
                            }
                            else if (typeof object1[propName] != typeof object2[propName])
                            {
                                return false;
                            }
                        }

                        for (propName in object2)
                        {
                            var object1Prop = object1[propName];
                            var object2Prop = object2[propName];

                            if (object2.hasOwnProperty(propName) != object1.hasOwnProperty(propName))
                            {
                                return false;
                            }
                            else if (typeof object1Prop != typeof object2Prop)
                            {
                                return false;
                            }

                            if (!object2.hasOwnProperty(propName))
                            {
                                // skip functions
                                continue;
                            }

                            if (object1Prop && (object1Prop instanceof Array || typeof object1Prop == "array"
                                                || object1Prop instanceof Object))
                            {
                                if (!this.equals(object1Prop, object2Prop))
                                {
                                    return false;
                                }
                            }
                            else if (object1Prop != object2Prop)
                            {
                                return false;
                            }
                        }
                        return true;
                    }
                }
            }
            return object1 === object2;
        };