1 2 3 4 5 | const test = {code = "코드", states = "스테이츠"}; const copied = test; test.code = "부트캠프"; console.log(copied.code) // "부트캠프" | cs |
두 변수가 참조하는 주소값이 같이때문에 하나의 데이터가 바뀌면 다른 한쪽도 바뀐다.
독립적으로 쓰고 싶다면 얕은 복사와 깊은 복사가 필요하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function shallowCopy(obj){ let result = {}; for(let key in obj){ result[key] = obj[key]; } return result; } const testObj = { code: "코드", states: {camp:"스테이츠"} } const copiedObj = shallowCopy(testObj); copiedObj.code = "코딩" console.log(testObj.code) // "코드" <- 얕은 복사가 되서 변화 없음 testObj.states.camp = "부트캠프"; console.log(copiedObj.states.camp) // "부트캠프" <- 같은 주소를 | cs |
1 2 3 4 5 6 | const obj = { code: "코드", states: "스테이츠" } const target = { 코딩: "부트캠프" } const copiedObj = Object.assign(target, obj) console.log(copiedObj) //{ 코딩: "부트캠프", code: "코드", states: "스테이츠" } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const info = { name: "zumwhol", favorite: { first: "money", second: "food", }, } const copied = Object.assign({}, info) info.name = "whol" info.favorite.first = "love" console.log(copied.name) // "zunwhol" <- 바뀌지 않음 console.log(copied.favorite.first) // "love" <- 바뀜 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const info = { name: "zumwhol", favorite: { first: "money", second: "food", } } const copied = {...info} info.name = "whol" info.favorite.first = "love" console.log(copied.name) // "zumwhol" console.log(copied.favorite.first) // "love" | cs |
아직...구현이 안돼요.🥲
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const info = { name: "zumwhol", favorite: { first: "money", second: "food" } } const copied = JSON.parse(JSON.stringify(info)); info.name = "whol" info.favorite.first = "love" console.log(copied.name) // "zumwhol" console.log(copied.favorite.first) // "money" | cs |
아직 몰라요..