JavaScript - 객체

juhojung·2022년 3월 29일
0

Javascript

목록 보기
2/3

모던 자바스크립트에서 새로 얻은 지식 정리를 위한 노트입니다.

자바스크립트에는 크게 원시형 (primitive type), 객체형 (object)이 있다.
보통 개발자들이 개발할때에는 대게 객체를 상당 수 사용한다.
이 객체는 함수를 포함하거나, 다양한 변수들을 어느정도의 제약만 지켜주면 넣을수 있어서
객체 없이는 프로그래밍이 안될정도로 많이 사용하고 있다. ( 사실 함수도 객체로 이루어져있다. )

예전에 처음 js 를 배울때 "js 의 모든 것은 함수로 이루어져있다고 해도 과언이아니다" 라고 사수분으로 부터 배웠는데, 하면 할수록 느끼고있다.

암튼 객체 관련한 지식들 정리.
알고 있던것도 있지만 그래도 정확하게 이해하는것은 중요하니 메모차원에서 기록한다.

1. 객체 삭제

var user = { 
	name : "juho",
    age : 25
} // 객체 정의
delete user.age; // user.age => undefined, key 도 같이 삭제됨.

2. 객체 키를 예약어로 쓸 수 있음. 뭐 사실 이렇게 쓸일이 있을까 싶다.

var anyObj = {
	for: 1,
    let: 2,
    var: 3,
}

3. 객체 데이터 존재 여부 확인

var anyObj = {
	a : 1,
    b : "2",
    c : "C",
    d : undefined
}
console.log(anyObj.a); // 1
console.log(anyObj.d); // undefined
console.log('d' in anyObj) // true

=== undefined 는 데이터가 있는지 여부라면, in 은 프로퍼티의 여부이다.

4. 객체 "특별한" 정렬방식

우리가 사용하는 Array 는 아이템의 연속성을 보장한다. 이건 알고있었는데,
객체는 그래서 어떻게 되는건가? 라는 질문의 대한 답은 아래에있다.

var sortObj = {
	"82" : "대한민국",
    "44": "영국",
    "41" : "스위스",
    "1" : "미국"
}
for(let key in sortObj) console.log(key); // 1, 41, 44, 82

정수 프로퍼티의 경우 원시형 타입으로 변환되면서 숫자 순서대로 나열된다.
그런데, 문자열 형식일 경우 그냥 의도된 순서대로 나온다.
정수 프로퍼티도 정의한 순서대로 나오려고 하면 속임수를 쓸수있다.

....
	for(let key in sortObj)
		console.log(+key); 
        // + 를 붙이면, 정수로 변환한다는 의미고 그건 곧 key 가 정수가 아니라는 뜻이다.

5. 객체 비교 및 완벽한 객체 복사

간단하게 객체 비교 정리해보면,

let objA = {
	a : 1,
    b : 2
}
let objB = objA;
console.log(objA === objB); // true
let objC = {
	a : 1,
    b : 2
}
console.log(objA === objC); // false

let objD = Object.assign({}, objA);
console.log(objA === objD); // true

위 경우는 조금만 js를 사용한 개발자라면 아는사실이다. 객체는 참조라는 개념이있으며,
각 객체마다 메모리주소값이 다르기에 발생하는 문제다.
위에 마지막 문단처럼 Object.assign 함수를 사용하면 완벽하게 객체가 복사된다.

profile
"어찌 할 수 없는 일에 대해 고민하는 시간은 낭비일 뿐이다."

0개의 댓글