两个对象之间比较的话,用 === 会返回false 因为两个对象的地址不相同

所以需要写一个可以比较对象是否全部相等的函数

//判断类型是否是函数或者数组
function isObject(obj) {
  return typeof(obj) === 'object' && obj !== null
}

function isEqual(obj1,obj2) {
  //简单类型
  if(!isObject(obj1) || !isObject(obj2)) {
    return obj1 === obj2 
  }
  //如果 obj1和obj2为同一个对象
  if(obj1 === obj2) {
    return true
  }

  //两个obj都是对象或者是数组,且不相等
  //1、 先取出 obj1和 obj2的 keys,比较个数
  const obj1Keys = Object.keys(obj1)
  const obj2Keys = Object.keys(obj2)
  if(obj1Keys.length !== obj2Keys.length) {
    return false
  }
  //2、 以 obj1为基准,和 obj2依次递归比较
  for(let key in obj1) {
    //比较当前的 key的 val  ——递归
    const res = isEqual(obj1[key], obj2[key])
    if(!res) {
      return false
    }
  }
  //3、 全相等
  return true
}

//test
const obj1 = {
  a:100,
  b: {
    c:200,
    d:300
  }
}

const obj2 = {
  a:100,
  b: {
    c:200,
    d:300
  }
} 

console.log(isEqual(obj1,obj2));