1. 객체
객체는 다양한 타입의 답을 하나의 단위로 구성한 복합적인 자료구조이다. 또한 객체는 변경 가능한 값이다.
const object = {
name: 'harry',
age: 20
}
- 0개 이상의 프로퍼티(속성)으로 구성
- 프로퍼티는 키(key)와 값(value)로 구성되어있으며 객체의 상태를 나타내는 값
- 메서드는 함수가 객체의 프로퍼티 값이 되는 경우. 프로퍼티를 참조하고 조작할 수 있는 동작을 말함
1) 객체의 값에 접근하기
(1) Dot notation
객체.속성 형태로 사용. 정해진 속성의 이름이 있을때만 사용할 수 있고, 속성이 동적으로 변할때는 사용할 수 없다.
(2) Bracket notation
객체[속성] 형태로 사용. 속성의 값이 동적으로 변할때에도 사용할수 있다.
주의할 점은 속성값을 넣어줄때 문자열, 또는 변수 형태로 넣어주어야 한다는 점이다.
문자열 형태로 속성값을 넣어주지 않을 경우 이를 변수로 인식해 에러가 발생할 수 있다.
🤔 객체에 없는 값에 접근하게 된다면?
객체에 존재하지 않는 프로퍼티에 접근할 경우 undefined가 반환된다. 이때 에러가 발생하지는 않음으로 주의해야 한다.
2) 객체 다루기
1) 객체의 값 추가
존재하지 않는 프로퍼티에 값을 할당하면 프로퍼티가 동적으로 생성되어 추가되고 값이 할당된다.
Dot notation 또는 Bracket notation으로 객체에 값을 추가할 수 있다.
객체[속성] = 값 또는 객체.속성 = 값 의 형태로 추가가 가능하다.
2) 객체의 값 삭제
delete 객체.속성 의 형태로 값을 삭제할 수 있다.
만약 존재하지 않는 프로퍼티를 삭제하면 아무런 에러 없이 무시된다.
3) 객체의 값 변경
객체[속성] = 값 또는 객체.속성 = 값 의 형태로 변경이 가능하다.
이미 존재하는 프로퍼티 키를 중복선언하면 나중에 선언한 프로퍼티가 먼저 선언한 프로퍼티를 덮어쓰게 됨으로 변경이 가능하게 된다.
4) 객체의 프로퍼티 확인
속성 in 객체 형태로 객체 내에 해당하는 속성이 있는지 확인할 수 있다.
3) 객체 메서드
- Object.keys() : 주어진 객체의 키를 모아서 배열로 반환한다.
- Object.values() : 주어진 객체의 값을 모아서 배열로 반환한다.
- Object.assign() : 객체를 합치거나 복사할 수 있다. arr.slice()와 동일한 기능으로 사용할 수 있다.
- Object.is(obj1, obj2) : 두 객체가 같은지 판단해 불리언 값으로 반환한다.
*******************************
오늘은 객체에 대해서 공부했다!
배열보다 객체가 더 쉽다고 하는 사람들도 있는 것 같은데, 나는 객체가 배열보다 더 헷갈린다....
언제 배열을 써야하는지, 언제 객체를 써야하는지 그런것도 아직 익숙하지가 않다.
그래도 배열은 순서가 있고, 객체는 속성에 이름이 있다는 점에 집중하면 조금 더 구분하기 쉬울것 같아서 앞으로는 구현할때 어떤것을 더 중점적으로 생각해야하는지 판단해서 배열과 객체를 사용해 보려고 한다.
그래도 이것도 열심히 연습하고 익히면 좀더 잘 알게 되겠지
일단은 너무 걱정하지말고 계속해서 공부해가는게 중요할것같다.
내일은 주말이니까 이번주 배웠던것들 복습해보고 올해의 회고를 작성해보는것도 좋을것같아서 한번 적어볼거다!
올해도 얼렁뚱땅 마무리 된것같지만 어쨌든 내년도 얼렁뚱땅 해보자
얼렁뚱땅이라고 하니까 좀 웃기긴 한데 아무튼 시작은 얼렁뚱땅 망설이지 말고 할일은 꼼꼼하게 잘 하는 한해가 되면 좋겠다 아무튼 화이팅 화이팅
'study > TIL' 카테고리의 다른 글
23.01.03 - 클로저, spread/rest 문법, 구조 분해 할당 (0) | 2023.01.03 |
---|---|
23.01.02 - 원시 자료형과 참조 자료형, 스코프 (0) | 2023.01.02 |
22.12.29 - 배열 (0) | 2022.12.29 |
22.12.27 - 계산기 기능 구현하기 (0) | 2022.12.28 |
22.12.26 - 계산기 목업, flex (0) | 2022.12.26 |