diff options
| -rw-r--r-- | src/Angular.js | 19 | ||||
| -rw-r--r-- | test/AngularSpec.js | 6 | 
2 files changed, 10 insertions, 15 deletions
| diff --git a/src/Angular.js b/src/Angular.js index 21b3ef07..a7b3b98c 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -620,23 +620,18 @@ function equals(o1, o2) {        } else {          if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2)) return false;          keySet = {}; -        length = 0;          for(key in o1) { -          if (key.charAt(0) === '$') continue; - -          if (!isFunction(o1[key]) && !equals(o1[key], o2[key])) return false; - -          length++; +          if (key.charAt(0) === '$' || isFunction(o1[key])) continue; +          if (!equals(o1[key], o2[key])) return false;            keySet[key] = true;          }          for(key in o2) { -          if (key.charAt(0) === '$') { -            continue; -          } -          if (!keySet[key] && !isFunction(o2[key])) return false; -          length--; +          if (!keySet[key] && +              key.charAt(0) !== '$' && +              o2[key] !== undefined && +              !isFunction(o2[key])) return false;          } -        return length === 0; +        return true;        }      }    } diff --git a/test/AngularSpec.js b/test/AngularSpec.js index f5638b9c..09bc902f 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -126,12 +126,12 @@ describe('angular', function() {        expect(equals(['misko'], ['misko', 'adam'])).toEqual(false);      }); -    it('should ignore undefined member variables', function() { +    it('should ignore undefined member variables during comparison', function() {        var obj1 = {name: 'misko'},            obj2 = {name: 'misko', undefinedvar: undefined}; -      expect(equals(obj1, obj2)).toBe(false); -      expect(equals(obj2, obj1)).toBe(false); +      expect(equals(obj1, obj2)).toBe(true); +      expect(equals(obj2, obj1)).toBe(true);      });      it('should ignore $ member variables', function() { | 
