본문 바로가기

ECMAScript 2015, ECMAScript 6th Edition

10. Object assign

자바스크립트에서 이런 코드를 작성해 본 적이 있는가??

let sports = {event: "축구", player: 11};
let dup = {};
dup = sports;

sports.player = 55;
console.log(dup.player);
//55 출력

dup.event = '농구';
console.log(sports.event);
//농구가 출력

//그래서 이런 처리를 해줘야 함.... 너무 귀츈귀츈... ㅜㅠㅜㅠ
for( var key in sports ) {
	dup[key] = sports[key];
}


assigning enumerable properties 는 copy 가 아니라 ref 되는 현상이다. 보통은 이를 막기 위해서 모든 properties 를 for 문을 돌려서 직접 넣어줘야 하는 귀츈귀츈한 현상이 생긴다.


ES 6에서는 이를 위해 Object.assign 을 제공해준다.

var dst  = { quux: 0 }
var src1 = { foo: 1, bar: 2 }
var src2 = { foo: 3, baz: 4 }
Object.assign(dst, src1, src2)
dst.quux === 0 // true
dst.foo  === 3 // true
dst.bar  === 2 // true
dst.baz  === 4 // true


ECMA Script 공식 Document 를 보면 assign 이 어떤 process를 거쳐 target object 에 enumerable properties 를 copy 하게 되는지 알 수 있다. ^^ 근데 머리 아프니깐 .. 굳이 보진 말자... ㅋㅋㅋ

ㅁ 참고 : http://www.ecma-international.org/ecma-262/6.0/#sec-object.assign



'ECMAScript 2015, ECMAScript 6th Edition' 카테고리의 다른 글

12. Generator  (0) 2017.01.24
11. Array Object  (0) 2016.09.27
9. for of  (0) 2016.09.25
8. Enhanced Object ProPerties  (0) 2016.09.15
7. destructuring  (0) 2016.09.13