언더스코어JS 객체 합치기 _.extend() 함수 사용법
_.extend()를 사용하여 여러 객체를 합칠 수 있습니다.

target 객체에 obj1, obj2 ... 여러개의 객체의 속성을 덮어씌워 합칩니다. 두번째 인자부터는 하나의 객체만을 합치거나 가변인자로 여러개의 객체를 넘겨 합칠 수 있습니다.
_.extend(target, obj1, obj2, ...)
cs


target 객체에 속성을 덮어 씌우는 형태입니다. a 객체와 b 객체를 선언한 후 extend()함수를 사용하면 a에 b의 속성인 age가 추가됩니다.
var a = {
      name : "kim",
      hobby : "movie"
}
 
var b = {
      age : 3
};
 
_.extend(a, b);
 
console.log(a);
console.log(b);
cs

실행결과입니다. 주의할점으로는 a객체는 속성이 추가되었지만 합치는 대상이 되는 b 객체에는 변화가 없다는 점입니다.




추가적으로 _.extend()함수는 합쳐진 객체를 리턴하는데, 앞서 말했듯이 target에 대상인 obj...를 덮어 씌우는 형태이므로 리턴되어진 객체와 a객체는 동일한 객체입니다.
var a = {
      name : "kim",
      hobby : "movie"
}
var b = {
      age : 3
};
var c = _.extend(a, b);
 
a.hobby = "pt";
 
console.log(a); //a와 c는 동일한 참조
console.log(c); //a와 c는 동일한 참조
cs


리턴된 c를 수정하든 target인 a를 수정하든 결과를 같습니다.








속성이 겹치는 경우
만약 합쳐지는 객체간에 겹치는 속성이 있는 경우 가장 마지막 인자로 넘긴 객체의 것으로 오버라이딩(override)됩니다.
var a = {
      name : "kim",
      hobby : "movie"
}
 
var b = {
      age : 3
};
 
var c = {
      age : 4
};
 
var d = {
      hobby : "pt"
};
 
_.extend(a, b, c, d);
 
console.log(a);
cs

실행결과입니다.





블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,