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);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.