티스토리 뷰
javascript/javascript30
14 - JavaScript References VS Copying (Javascript 30)
oraclian 2019. 10. 20. 23:07이번 파트는 자바스크립트의 참조와 복사에 대해서 공부하는 파트입니다.
1.
const players = ['Wes', 'Sarah', 'Ryan', 'Poppy'];
const team = players;
console.log(players, team);
team[3] = 'Lux';
console.log(players, team);
결과는 players와 team이 같이 바뀐다 이것은 얕은 복사라서 그렇습니다.
2.
const team2 = players.slice();
const team3 = [].concat(players);
// 아래 두 방법은 ES6부터 사용가능합니다.
const team4 = [...players];
const team5 = Array.from(players);
배열은 위의 방법으로 깊은 복사를 할 수 있습니다.
3.
const person = {
name: 'Wes Bos',
age: 80
};
// 첫 번째 방법
const cap2 = Object.assign({}, person, { number: 99, age: 12 });
console.log(cap2);
// 두 번째 방법
const cap3 = {...person};
객체는 위와 같은 방법으로 깊은 복사를 할 수 있습니다.
4.
const wes = {
name: 'Wes',
age: 100,
social: {
twitter: '@wesbos',
facebook: 'wesbos.developer'
}
};
// 이 방식으로는 social은 깊은복사가 되지 않는다.
const dev = Object.assign({}, wes);
dev.social.twitter = '@wesbos2';
console.log(wes, dev);
// JSON으로 변경한뒤 다시 만들면 깊은 복사가 된다.
const dev2 = JSON.parse(JSON.stringify(wes))
dev2.social.twitter = '@wesbos3';
console.log(wes, dev2);
'javascript > javascript30' 카테고리의 다른 글
13 - Slide in on Scroll (Javascript 30) (0) | 2019.10.20 |
---|---|
12 - Key Sequence Detection (Javascript 30) (0) | 2019.10.20 |
11 - Custom Video Player (Javascript 30) (0) | 2019.10.20 |
10 - Hold Shift and Check Checkboxes (Javascript 30) (0) | 2019.10.20 |
09 - Dev Tools Domination (Javascript 30) (0) | 2019.10.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- django
- Python
- 팩토리 메소드 패턴
- 안드로이드
- cmd
- flask
- 심플 팩토리 패턴
- 웹
- 한글 깨짐
- 파이썬
- Git
- 추상 클래스
- ㄹ
- 깨짐
- Google Map
- git log
- Windows
- 플라스크
- Apache
- Windwos
- 팩토리 패턴
- 한글
- 구글 맵
- 구글맵
- 한글깨짐
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함