js浅拷贝深拷贝

js浅拷贝,深拷贝的简单实现

基础数据

var a = {
  num: 1,
  arr: [1, 2, 3],
  undef: undefined,
  nul: null,
  str: 'aaa',
  fun: function () {
    console.log('bbb')
  },
  json: {
    data1: [4, 5],
    data2: [6, 8, 9]
  }
}

// console.log(JSON.parse(JSON.stringify(a)))

浅拷贝

function simpleClone(obj) {
  if (!obj) return null;
  var res = obj instanceof Array ? [] : {}
  for (let i in obj) {
    res[i] = obj[i]
  }
  return res;
}

// var b = simpleClone(a)
// b.json.data1 = [4, 5, 6]
// console.log(b, a)
// var c = [1, 2, 3]
// console.log(simpleClone(c))

深拷贝

function deepClone(obj) {
  if (!obj) return null;
  var res = obj instanceof Array ? [] : {}
  for (let i in obj) {
    res[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]
  }
  return res;
}

// var c = deepClone(a)
// c.json.data1 = [4, 5, 6]
// console.log(c, a)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。