1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| "use strict";
|
| var eq = require("./eq")
| , value = require("./valid-value")
| , keys = Object.keys
| , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
|
| module.exports = function (val1, val2) {
| var k1, k2;
|
| if (eq(value(val1), value(val2))) return true;
|
| val1 = Object(val1);
| val2 = Object(val2);
|
| k1 = keys(val1);
| k2 = keys(val2);
| if (k1.length !== k2.length) return false;
| return k1.every(function (key) {
| if (!objPropertyIsEnumerable.call(val2, key)) return false;
| return eq(val1[key], val2[key]);
| });
| };
|
|