UNPKG

mout

Version:

Modular Utilities

35 lines (27 loc) 891 B
define(['./hasOwn', './every', '../lang/isObject'], function(hasOwn, every, isObject) { function defaultCompare(a, b) { return a === b; } // Makes a function to compare the object values from the specified compare // operation callback. function makeCompare(callback) { return function(value, key) { return hasOwn(this, key) && callback(value, this[key]); }; } function checkProperties(value, key) { return hasOwn(this, key); } /** * Checks if two objects have the same keys and values. */ function equals(a, b, callback) { callback = callback || defaultCompare; if (!isObject(a) || !isObject(b)) { return callback(a, b); } return (every(a, makeCompare(callback), b) && every(b, checkProperties, a)); } return equals; });