JavaScript 객체와 불변성이란 ?

온두·2022년 7월 1일
0

기본형 데이터와 참조형 데이터


기본형 데이터(원시형)
-숫자 Number

console.log(10) // 10을 출력
const myAge = 37
const yourAge = 25
console.log(myAge) // 37을 출력 
console.log(yourAge) // 25를 출력

-문자열 String

const firstName = 'Sinrok' 
const lastName = 'Kim'
console.log(firstName) // Sinrok을 출력 console.log(lastName) // Kim을 출력`

-Boolean

const isMan = true 
const isWoman = false
console.log(isMan) 
console.log(isWoman)

-null, undefined

let name1 = null 
console.log(name) // null을 출력
let name2
console.log(name2) // undefined를 출력

참조형 : 원시형 데이터의 집합

배열([])과 객체({}), 함수(function(){})가 대표적이다.
변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다.
동적으로 크기가 변하는 데이터를 보관하기위해 변수가 아닌 다른곳에
데이터를 저장하고 변수에는 그 주소만 할당한다.

배열 – Array : [0,1,2,3,4]
객체 – Object {name : “Hanamon”, age : 16}

즉, 변수에는 하나의 값 혹은 주소만 저장할 수 있다.

불변 객체를 만드는 방법

-const

-Object.freeze()

-const + Object.freeze

const truth = {
	'dogIs': 'Cute'
};

Object.freeze(truth);

얕은 복사와 깊은 복사

shllow Copy : 기존 값과 복사된 값이 같은 참조를 가리키고 있는 것

Array.prototype.slice()
얕은 복사 방법의 대표적인 예라고 할 수 잇습니다. 
start부터 end 인덱스까지 기존 배열에서 추출하여 
새로운 배열을 리턴하는 메소드 입니다. 
만약 start와 end를 설정하지 않는다면, 
기존 배열을 전체 얕은 복사합니다. 
Object.assign(생성할 객체, 복사할 객체)
Spread 연산자 (전개 연산자)

Deep Copy : 객체 안에 객체가 있을 경우에도
원본과의 참조가 완전히 끊어진 객체를 말합니다.

JSON.parse && JSON.stringify
재귀 함수를 구현한 복사
Lodash 라이브러리 사용 
profile
똑쟁이 개발자

0개의 댓글