develop/script
참조형 복사하기 (Reference Type Copy)
i'm suna
2023. 10. 13. 10:08
1. slice()
number1 을 삭제하지 않은 상태로 값을 복사
let number1 = [1,2,3];
let number2 = number1.slice()
2. for( in)
빈 객체를 생성후 for in 문으로 각 프로퍼티들을 넣어준다
let user1 = {
name : "suna",
age : 28
}
let user2 = {};
for(let key in user1){
user2[key] = user1[key];
}
3. function
위의 코드를 함수로 만들면 아래와 같다
function clone(object){
let user2 = {};
for(let key in user1){
user2[key] = user1[key];
}
return result;
}
let user1 = {
name : "suna",
age : 28
}
let user2 = clone(user1);
다만 아래의 경우 user1 에 객체가 있을 경우
예를들어
user1 = {like : ["apple", "banana"]}
일 경우 주소값이 복사되는데 이는 아래의 코드로 수정하면 해결된다.
function clone(object){
if(object === null || typeof object !== "object")
return object;
let temp;
if(Array.isArray(object)){
temp=[];
}else{
temp={}
}
for (let key of Object.keys(object)){
temp[key] = cloneObject(object[key])
}
return temp;
}
let user1 = {
name : "suna",
age : 28
}
let user2 = clone(user1);