'use strict'; | |
var eq = require('./eq') | |
, value = require('./valid-value') | |
, keys = Object.keys | |
, propertyIsEnumerable = Object.prototype.propertyIsEnumerable; | |
module.exports = function (a, b) { | |
var k1, k2; | |
if (eq(value(a), value(b))) return true; | |
a = Object(a); | |
b = Object(b); | |
k1 = keys(a); | |
k2 = keys(b); | |
if (k1.length !== k2.length) return false; | |
return k1.every(function (key) { | |
if (!propertyIsEnumerable.call(b, key)) return false; | |
return eq(a[key], b[key]); | |
}); | |
}; |