mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-10 10:57:49 +00:00
reverting some changes to isEqual that were a little too aggressive
This commit is contained in:
@@ -72,8 +72,8 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
var moe = {name : 'moe', lucky : [13, 27, 34]};
|
var moe = {name : 'moe', lucky : [13, 27, 34]};
|
||||||
var clone = {name : 'moe', lucky : [13, 27, 34]};
|
var clone = {name : 'moe', lucky : [13, 27, 34]};
|
||||||
var isEqualObj = {isEqual: function (o) { return o.isEqual == this.isEqual; }, unique: {}};
|
var isEqualObj = {isEqual: function (o) { return o.isEqual == this.isEqual; }, unique: {}};
|
||||||
var isEqualObjClone = {isEqual: isEqualObj.isEqual, unique: {}};
|
var isEqualObjClone = {isEqual: isEqualObj.isEqual, unique: {}};
|
||||||
ok(moe != clone, 'basic equality between objects is false');
|
ok(moe != clone, 'basic equality between objects is false');
|
||||||
ok(_.isEqual(moe, clone), 'deep equality is true');
|
ok(_.isEqual(moe, clone), 'deep equality is true');
|
||||||
ok(_(moe).isEqual(clone), 'OO-style deep equality works');
|
ok(_(moe).isEqual(clone), 'OO-style deep equality works');
|
||||||
|
|||||||
@@ -610,14 +610,16 @@
|
|||||||
// `NaN` values are equal.
|
// `NaN` values are equal.
|
||||||
if (_.isNaN(a)) return _.isNaN(b);
|
if (_.isNaN(a)) return _.isNaN(b);
|
||||||
// Compare dates by their millisecond values.
|
// Compare dates by their millisecond values.
|
||||||
if (_.isDate(a)) return _.isDate(b) && a.getTime() == b.getTime();
|
var isDateA = _.isDate(a), isDateB = _.isDate(b);
|
||||||
|
if (isDateA || isDateB) return isDateA && isDateB && a.getTime() == b.getTime();
|
||||||
// Compare RegExps by their source patterns and flags.
|
// Compare RegExps by their source patterns and flags.
|
||||||
if (_.isRegExp(a))
|
var isRegExpA = _.isRegExp(a), isRegExpB = _.isRegExp(b);
|
||||||
return _.isRegExp(b) &&
|
if (isRegExpA || isRegExpB)
|
||||||
a.source == b.source &&
|
return isRegExpA && isRegExpB &&
|
||||||
a.global == b.global &&
|
a.source == b.source &&
|
||||||
a.multiline == b.multiline &&
|
a.global == b.global &&
|
||||||
a.ignoreCase == b.ignoreCase;
|
a.multiline == b.multiline &&
|
||||||
|
a.ignoreCase == b.ignoreCase;
|
||||||
// Ensure that both values are objects.
|
// Ensure that both values are objects.
|
||||||
if (typeA != 'object') return false;
|
if (typeA != 'object') return false;
|
||||||
// Unwrap any wrapped objects.
|
// Unwrap any wrapped objects.
|
||||||
@@ -625,6 +627,7 @@
|
|||||||
if (b._chain) b = b._wrapped;
|
if (b._chain) b = b._wrapped;
|
||||||
// Invoke a custom `isEqual` method if one is provided.
|
// Invoke a custom `isEqual` method if one is provided.
|
||||||
if (typeof a.isEqual == 'function') return a.isEqual(b);
|
if (typeof a.isEqual == 'function') return a.isEqual(b);
|
||||||
|
if (typeof b.isEqual == 'function') return b.isEqual(a);
|
||||||
// Compare array lengths to determine if a deep comparison is necessary.
|
// Compare array lengths to determine if a deep comparison is necessary.
|
||||||
if ('length' in a && (a.length !== b.length)) return false;
|
if ('length' in a && (a.length !== b.length)) return false;
|
||||||
// Assume equality for cyclic structures.
|
// Assume equality for cyclic structures.
|
||||||
|
|||||||
Reference in New Issue
Block a user