JS 대상 을 깊이 복사 하 는 몇 가지 방법 총화

6261 단어 js
예:
var obj = {
     
    name: "  ",
    age: 18,
    skin: [
		{
      id: 0, name: '    ', color: 'yellow' },
		{
      id: 1, name: '  ', color: 'red'  }
	]
}

1. for... 복사 대상 옮 겨 다 니 기
function copy(obj) {
     
    var obj2 = {
     }
    for (var key in obj) {
     
        obj2[key] = typeof obj[key] === "object" ? copy(obj[key]) : obj[key]
    }
    return obj2
}
var obj2 = copy(obj) 
console.log(obj2); // {name: "  ", age: 18, skin: [{ id: 0, name: '    ', color: 'yellow'  },{ id: 1, name: '  ', color: 'red'  }]}
console.log(obj === obj2) // false

2. JSON.stringify/JSON.parse
	var obj2 = JSON.parse(JSON.stringify(obj)) // {name: "  ", age: 18, skin: [{ id: 0, name: '    ', color: 'yellow'  },{ id: 1, name: '  ', color: 'red'  }]}
	console.log(obj === obj2) // false

3. 연산 자 펼 치기
var obj2 = {
     ...obj}
console.log(obj2) // {name: "  ", age: 18, skin: [{ id: 0, name: '    ', color: 'yellow'  },{ id: 1, name: '  ', color: 'red'  }]}
console.log(obj === obj2)  // false

메모: obj 가 하나의 배열 이 라면 Array. prototype. concat ([]) 를 사용 하면 새로운 배열 을 복제 할 수 있 습 니 다.
4. lodash. js 도구 함수 라 이브 러 리 의 cloneDeep 함수
var obj2 = _.cloneDeep(obj);

좋은 웹페이지 즐겨찾기