const objectUtils = {};

objectUtils.deepCopy = (obj) => {
  return JSON.parse(JSON.stringify(obj));
};

objectUtils._deepCopy = (o) => {
  // if o is not an object
  if (!o || (typeof o) !== 'object') return o;
  let dc = Array.isArray(o) ? [] : {};
  let keys = Object.keys(o);

  for (let k of keys) {
    let v = o[k];
    dc[k] = objectUtils.deepCopy(v);
  }

  return dc;
};

objectUtils.isEmpty = (obj) => {
  // 本身为空直接返回true
  if (obj === null || obj === undefined) return true;

  // 然后可以根据长度判断，在低版本的ie浏览器中无法这样判断。
  if (obj.length > 0) {
    return false;
  }
  if (obj.length === 0) {
    return true;
  }

  // 最后通过属性长度判断。
  for (var key in obj) {
    if (hasOwnProperty.call(obj, key)) return false;
  }

  return true;
};

export default objectUtils;
