(共556篇)
全部分类

一个简单的深拷贝案例
[ Case ] 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function isObj(target) {
  return Object.prototype.toString.call(target).slice(8, -1) === 'Object';
}
function mergeOptions(target, source) {
  debugger;
  for (const k in source) {
    if (target[k] === undefined) {
      // 如果target中没有,就直接赋值
      console.log(1);
      target[k] = source[k];
      continue;
    }
    // 否则就取决于值得类型
    if (isObj(target[k]) && isObj(source[k])) {
      // 如果都是对象,就就递归赋值
      console.log(2);
      target[k] = mergeOptions(target[k], source[k]);
      continue;
    }
    console.log(3);
    target[k] = source[k];
  }
  return target;
}
const a = {
  base2: 'aa',
  base: {
    name: 'zhangsan'
  }
};
const b = {
  base1: 'kkk',
  base: {
    wx: 'wx'
  }
};
console.log(mergeOptions(a, b));