mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-08 18:17:48 +00:00
Ensure _.isEqual works with objects created by Object.create(null).
This commit is contained in:
40
dist/lodash.compat.js
vendored
40
dist/lodash.compat.js
vendored
@@ -1261,10 +1261,10 @@
|
||||
ctorB = !support.argsObject && isArguments(b) ? Object : b.constructor;
|
||||
|
||||
// non `Object` object instances with different constructors are not equal
|
||||
if (ctorA != ctorB && !(
|
||||
isFunction(ctorA) && ctorA instanceof ctorA &&
|
||||
isFunction(ctorB) && ctorB instanceof ctorB
|
||||
)) {
|
||||
if (ctorA != ctorB &&
|
||||
!(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&
|
||||
(!nativeCreate || ('constructor' in a && 'constructor' in b))
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1956,15 +1956,15 @@
|
||||
* @returns {Object} Returns the destination object.
|
||||
* @example
|
||||
*
|
||||
* _.assign({ 'name': 'fred' }, { 'age': 40 });
|
||||
* // => { 'name': 'fred', 'age': 40 }
|
||||
* _.assign({ 'name': 'fred' }, { 'employer': 'slate' });
|
||||
* // => { 'name': 'fred', 'employer': 'slate' }
|
||||
*
|
||||
* var defaults = _.partialRight(_.assign, function(a, b) {
|
||||
* return typeof a == 'undefined' ? b : a;
|
||||
* });
|
||||
*
|
||||
* var person = { 'name': 'barney' };
|
||||
* defaults(person, { 'name': 'fred', 'employer': 'slate' });
|
||||
* var object = { 'name': 'barney' };
|
||||
* defaults(object, { 'name': 'fred', 'employer': 'slate' });
|
||||
* // => { 'name': 'barney', 'employer': 'slate' }
|
||||
*/
|
||||
var assign = createIterator(defaultsIteratorOptions, {
|
||||
@@ -2092,8 +2092,8 @@
|
||||
* @returns {Object} Returns the destination object.
|
||||
* @example
|
||||
*
|
||||
* var person = { 'name': 'barney' };
|
||||
* _.defaults(person, { 'name': 'fred', 'employer': 'slate' });
|
||||
* var object = { 'name': 'barney' };
|
||||
* _.defaults(object, { 'name': 'fred', 'employer': 'slate' });
|
||||
* // => { 'name': 'barney', 'employer': 'slate' }
|
||||
*/
|
||||
var defaults = createIterator(defaultsIteratorOptions);
|
||||
@@ -2513,13 +2513,13 @@
|
||||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||||
* @example
|
||||
*
|
||||
* var fred = { 'name': 'fred', 'age': 40 };
|
||||
* var copy = { 'name': 'fred', 'age': 40 };
|
||||
* var object = { 'name': 'fred' };
|
||||
* var copy = { 'name': 'fred' };
|
||||
*
|
||||
* fred == copy;
|
||||
* object == copy;
|
||||
* // => false
|
||||
*
|
||||
* _.isEqual(fred, copy);
|
||||
* _.isEqual(object, copy);
|
||||
* // => true
|
||||
*
|
||||
* var words = ['hello', 'goodbye'];
|
||||
@@ -3417,6 +3417,10 @@
|
||||
* (value, index|key, collection). Callbacks may exit iteration early by
|
||||
* explicitly returning `false`.
|
||||
*
|
||||
* Note: As with other "Collections" methods, objects with a `length` property
|
||||
* are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
|
||||
* may be used for object iteration.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @alias each
|
||||
@@ -5342,11 +5346,11 @@
|
||||
* // => 'hi fred'
|
||||
*
|
||||
* object.greet = function(greeting) {
|
||||
* return greeting + ', ' + this.name + '!';
|
||||
* return greeting + 'ya ' + this.name + '!';
|
||||
* };
|
||||
*
|
||||
* func();
|
||||
* // => 'hi, fred!'
|
||||
* // => 'hiya fred!'
|
||||
*/
|
||||
function bindKey(object, key) {
|
||||
return arguments.length > 2
|
||||
@@ -5940,8 +5944,8 @@
|
||||
* @returns {*} Returns `value`.
|
||||
* @example
|
||||
*
|
||||
* var fred = { 'name': 'fred' };
|
||||
* fred === _.identity(fred);
|
||||
* var object = { 'name': 'fred' };
|
||||
* object === _.identity(object);
|
||||
* // => true
|
||||
*/
|
||||
function identity(value) {
|
||||
|
||||
Reference in New Issue
Block a user