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