Javascript Object   자바스크립트 객체

(2022-02-28)

객체 , Object


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) 콘솔 객체



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"