| 123456789101112131415161718192021222324252627282930313233343536 | var hasOwn = require('./hasOwn');var every = require('./every');var isObject = require('../lang/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));    }    module.exports = equals;
 |