자바스크립트에서 이런 코드를 작성해 본 적이 있는가??
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 |