1. 자바스크립트 객체의 특징
ㅇ 모든 것을 객체로 바라다 봄
- 함수도, 배열도, 변수도, 데이터도 모두 객체임
. 결국, 모든 것을 객체를 통해 참조하여 값으로 처리할 수 있음
.. 例) 데이터도 객체 참조를 통해 값으로 변환될 수 있는 객체임
.. 例) 함수도 그 자체를 전달인수나 리턴 값으로 취급할 수 있는 일급 객체 임
ㅇ 동적으로/유연하게 객체의 구조와 동작방식을 바꿀 수 있음
- 즉, 동적으로 객체 내 프로퍼티(속성)를 추가,제거,변경할 수 있음
ㅇ 자바스크립트 객체는, 이름을 갖는 프로퍼티(스트링,함수,배열 등)들의 집합체 임
- 여기서, 프로퍼티(속성)은, `이름(키)`와 `값`의 쌍 이며,
- 이때, 값은 모든 자료형이 가능하고, 표현식까지도 가능함
. 즉, 그 값이 다른 객체의 참조를 갖을 수 있으며,
. 만일, 그 값이 함수 객체의 참조를 갖으면 메서드 라고 함
ㅇ 구현 관점으로 볼 때, 연상 배열 또는 해시로써 취급됨
- 즉, 이름과 키로 접근 가능한 배열로써 구현되고 사용됨
2. 자바스크립트 객체의 구분
※ ☞ 자바스크립트 객체 구분 참조
- 코어 객체(core object) / 내장 객체(built-in object) / 네이티브 객체(native object)
. 자바스크립트 언어 내부에 내장되어 있는 객체
- 호스트 객체 (host object) : 실행 환경 마다 다르게 덧붙여 존재하는 객체
. 즉, 운영체제,웹브라우저 마다 달라짐
- 사용자 정의 객체 (user-defined object)
3. 자바스크립트는, `프로토타입 기반의 객체지향 언어` 임
※ ☞ 프로토타입 객체/부모 객체 참조
- 자바스크립트는, 객체지향의 상속성 개념과 유사하지만, 이와달리,
- 모든 객체는 자신의 부모 역할을 하는 프로토타입 객체를 가리키는
- 숨겨진 프로퍼티를 갖고 있게 됨
4. 자바스크립트 객체의 구현 및 생성,저장,접근
ㅇ 객체의 구현 형태 ☞ 연관 배열 참조
- 여러 다른 형태의 데이터를 이름(키)과 값에 의해 한 쌍으로 묶어 모은 복합 데이터
ㅇ 객체의 생성,저장,접근 ☞ 자바스크립트 객체의 생성 저장 접근 참조
- 객체 생성 : `객체 리터럴`, `생성자(Constructor)`로 생성 가능
- 객체 저장 : 변수, 배열 내 요소, 객체 내 프로퍼티 등 다양한 곳에 저장 가능
- 객체 접근 : 점 접근법(.), 대괄호 접근법([])에 의해 객체 내부에 접근 가능
5. 자바스크립트 객체의 활용
ㅇ 객체 길이의 확인 방법 : Object.keys(obj).length
- 여기서, keys()는 객체의 키들을 배열화시켜 반환하는 메소드임
ㅇ 객체 내 프로퍼티에 접근하는 방법 둘
- 점 표기법
- 대괄호 표기법
ㅇ 객체 내 프로퍼티의 열거 방법
- for/in 문
- Object.keys() 메소드
- Object.getOwnPropertyNames() 메소드
ㅇ 해당 객체의 소속 멤버(프로퍼티)인지 판단하는 방법 : in 연산자
- 例) myMember in obj; => 소속 멤버이면 : true, 아니면 : false
ㅇ 특정 생성자에 의해 생성된 인스턴스인지를 판단하는 방법 : instanceof 연산자
ㅇ 바탕이 되는 생성자를 취득(생성)하는 방법 : constructor 프로퍼티
ㅇ 해당 객체가 특정 프로토타입인지를 확인하는 방법 : isPrototypeOf 메소드
- 例) myObj.prototype.isPrototypeOf(thatObj); => 특정 프로토타입이면 : true