2024. 1. 31. 16:09ㆍ자바스크립트
스프레드 연산자
하나로 뭉쳐있는 값들을 전개해줌
... -< 스프레드 연산자
참조타입
자바스크립트의 객체: 참조타입
새로운 객체를 만들고 거기에 원래의 객체내용을 대입한뒤 ,
새로운객체의 이름을 바꿔도 원래의 객체의 이름이 같이 바뀜
이번에는 객체형태 ( {} 를 넣은 형태)를 새로운 변수에 저장 해서 성을 변경 했다. 결과는
원래의 객체인 obj의 성이 변경 되지 않았다.
obj.hobby -> 객체안에 새로운 속성인 hobby를 만들고 그안에 또 새로운 객체를 삽입 ,
결과는 객체 obj 안에 새로운 속성인 hobby라는 키에 또 새로운 객체가 담기게됨
얕은복사
새로운 객체에 또 two라는 객체에 접근가능, 거기서 two 객체의 값을 'watching movie ' 로 변경했더니
객체 obj의 값인 two 의 값 'playing game' 이 'watching movie'로 변경 되었음
얕은 복사 라고함
주소값까지만 복사하는 얕은복사,
실제데이터 까지만 복사하는 깊은 복사 두가지가 있음
참조타입 복사
참조 타입의 복사: 원본데이터에 영향을 줌
힙이라는 메모리에는 유동적으로 크기가 변하는 데이터들이 존재하게 됨
참조 타입을 사용시 다음과같이 원본에 영향을 끼치게됨
힙이라는 메모리에 배열과 객체가 저장 되기 때문에 우리가 원하는대로 조작이 가능함
배열과 객체 선언시
const 키워드 사용시 , ( 재선언, 재할당 x )
그러나 우리는 다음과 같이 값을 바꿔왔는데
const obj = {
name: "otter"
}
obj.name = "rabbit"
const 키워드로 선언된 obj(안에 있는 주소값) 은 변환되지 않음
우리가 바꿔왔던것은 힙메모리에 존재하는 값들 (유동적으로 데이터변화 가능 , 주소 x )
-> const 로 선언을 해도 아무 문제가 없었음
배열과 객체를 const로 선언 하는 이유
우리가 코딩을 할때 우리가 어떠한 데이터가 담겨있을지 몰라도 우리가 const 로 선언해놓으면
obj 객체의 값은 변경불가능한것을 알기 때문에 우리가 쉽게 객체라는것을 파악 할 수 있음
얕은 복사 활용
얕은 복사를 활용할때, 두개의 변수에 담겨있는 배열을 하나로 합칠때도 사용 가능함
깊은 복사
JSON 데이터 포맷: 문자열 형태 (주소값이 사라짐)
JSON.parse
JSON.stringfy
등등을 활용하면 배열이나 객체를 완벽하게 복사가 가능함
'자바스크립트' 카테고리의 다른 글
[자바스크립트] classList 속성 (0) | 2024.02.06 |
---|---|
[자바스크립트] rest 파라미터 (0) | 2024.02.05 |
[자바 스크립트 ] 동기 / 비동기 (Promise 객체) (0) | 2024.01.31 |
[자바스크립트] 함수 레벨 스코프 와 블록 레벨 스코프 (var, let/const) (0) | 2024.01.25 |
[D-day 계산기] document 객체 사용 방법 + (DOM 이란) (2) | 2024.01.24 |