heyujie
2021-06-07 8f8155aa4c83f7c2577ac123add550766b6a7ce3
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]);
    });
};