객체?
비 원시타입으로 분류되는 자바스크립트의 객체형 자료형 중
객체 생성
- 비원시타입 자료형
- 한 번에 여러개의 데이터 값들을 저장 가능
1. 객체 생성자
let person = new Object();
new 키워드를 통해 객체를 생성
2. 객체 리터럴
let person = {};
중괄호를 이용해 객체 생성
객체 프로퍼티
- 객체의 중괄호 내부에 들어갈 데이터
- key와 value를 쌍으로 이루는 데이터
let iam = {
name: "가영",
}
여기에서 name은 key값, "가영"은 value값이며, name: "가영"은 객체의 프로퍼티 혹은 속성이라고 부름
객체 프로퍼티 값 사용
let person = {
name: "가영",
age: 19,
pet: "cat"
}
점 표기법
- 점 (.)을 이용해 객체의 값을 꺼내는 방법
- 객체 이름 뒤에 점을 찍고 객체 프로퍼티의 key값을 작성하면, key값에 해당하는 value 값을 가져옴
![](https://velog.velcdn.com/images/gazero_/post/41641eee-698c-4272-8282-9de40119687f/image.png)
괄호 표기법
- 객체의 이름 뒤에 대괄호를 열어 대괄호 안에 key 값을 작성
- 대괄호 안에 큰따옴표가 필요
- 객체의 key값이 고정적이지 않고, key값을 특정 함수의 매개변수가 결정한다거나, 값이 계속 바뀌는 경우 괄호 표기법을 활용하게 함
![](https://velog.velcdn.com/images/gazero_/post/16cad18b-5563-4e2c-993f-06bce2e93e35/image.png)
key값을 매개변수가 결정하는 코드
![](https://velog.velcdn.com/images/gazero_/post/b4eab3aa-a985-41b3-a30c-180a2effd9df/image.png)
- getGazero 함수의 인수로 gazero 객체 프로퍼티의 key 값인 name을 넘겨줌
- 출력 결과 name에 해당하는 value 값인 "가영"이 출력됨
프로퍼티 추가
프로퍼티를 추가하는 방법에는 점표기법, 괄호표기법이 있음
![](https://velog.velcdn.com/images/gazero_/post/5be30cb1-c8d2-4072-9804-d8bdd172049e/image.png)
프로퍼티 수정
프로퍼티 값 수정을 하는 방법에는 점표기법, 괄호표기법이 있음
![](https://velog.velcdn.com/images/gazero_/post/d986a255-eb45-4dfd-84e0-64440e49af43/image.png)
상수로 선언된 객체 프로퍼티의 값을 수정할 수 있을까? 가능 !
![](https://velog.velcdn.com/images/gazero_/post/7718da1c-0e19-422c-abcb-dc8e4c687b8b/image.png)
- gazero 객체의 프로터를 변경하는 것은 객체 고유 id를 변경하는 것이 아니므로, const(상수)로 선언하더라도 프로퍼티의 값 변경이 가능
![](https://velog.velcdn.com/images/gazero_/post/60ed357e-e517-4c22-805a-d12fcd51b287/image.png)
- 따라서 gazero라는 객체 자체에 새로운 프로퍼티를 저장하려하면 고유한 id를 변경하는 것이 되므로 에러가 발생
프로퍼티 삭제
프로퍼티를 삭제할 때에는 delete 키워드를 사용해서 삭제함
![](https://velog.velcdn.com/images/gazero_/post/1f24adeb-46c3-4e0b-8e9f-d34a7bd74327/image.png)
객체의 함수 프로퍼티
프로퍼티의 값이 함수일 때?
![](https://velog.velcdn.com/images/gazero_/post/5ec93a79-aa0b-46d3-9a32-18252e9b3803/image.png)
- 객체 프로퍼티의 값이 함수인 경우 = 메서드
- 메서드는 객체 내부의 프로퍼티에 접근할 수 있는 기능이 있음
gazero 객체의 print 메서드에서 key값이 name인 프로퍼티의 value 값을 출력 !
![](https://velog.velcdn.com/images/gazero_/post/fea1eb03-db4b-434d-a1d2-6d2c2790fdaf/image.png)
객체 메서드에서는 this를 이용해 자신이 속해있는 객체를 가리킬 수 있음
화살표 함수로 변경이 가능?
![](https://velog.velcdn.com/images/gazero_/post/d07e198d-5883-4d8e-aed0-458eae6b8cc9/image.png)
- 에러가 발생하는 이유는 function으로 선언한 메서드는 this가 제대로 자신이 속한 객체를 가르킴, 하지만 화살표형 함수는 자신이 속한 객체를 가리키지 못함