• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

안녕하세요 Object 라는 개념을 정리해보았는데 혹시 제가 옮바르게 이해하고 있는 걸까요 ?

20.10.07 16:48 작성 조회수 70

0

JS의 Objcet 종류

1. 네이티브 오브젝트

  • JS 스펙에 정의 되어있는 Object 를 의미한다.
  • Number, String 과 같이 빌트인 된 오브젝트를 포함하는 개념이다.

2. 호스트 오브젝트

  • 네이티브 오브젝트와 같이 JS 스펙에 정의 되어있는 Object 가 아닌 모든 것
  • Window, DOM Object 와 같은 요소들이 존재한다.
  • JS에서 기본적으로 제공되는 객체(빌트인 오브젝트)를 제외하며 JS가 사용 되는 환경 (플랫폼) 에서 제공되는 오브젝트를 의미한다.

+ Host Object는 JS 가 사용되는 환경 (호스트) 에 따라 호스트가 제공 하는 Object는 다르며 이때 제공 되는 Host Object는 JS라는 언어로써 사용 될 수 있는 형태로 제공된다.

자바스크립트의 사용 (브라우저)

EX )

  1. JS 언어를 사용하여 특정 호스트 환경 (브라우저, 서버, Etc... ) 에서 작업 수행
  2. 특정 호스트 환경은 사용되는 플랫폼에 따라 해당 플랫폼에서 사용 할 수 있는 Host Object 를 제공 (JS 환경에서 사용 가능 한 형태 )
  3. 제공 되는 Host Object 의 요소를 가지고 (브라우저, 서버) 와 같은 현재 호스트(플랫폼)의 요소, 기술 등을 사용하여 제어 한다. (사용자에게 이벤트 띄우기, 사용자의 입력 값 받기, Etc.. )
  4. Host Object 를 사용하여 받은 자료를 JS 라는 언어를 통해 입력받은 문자열 파싱 등과 같이 다른 추가적인 프로그래밍적 처리를 하게 된다. 

Object의 생성

var newObj = new Number(123); 

위의 코드가 실행 될 경우 다음과 같은 과정을 통해 생성 된다.

  1. Number Object 가 가지고 있는 Number.prototype.constructor 라는 생성자를 호출
  2.  Number.prototype  객체의 요소가 담긴 메모리의 주소를 newObj 의 __proto__ 라는 프로퍼티의 값으로 참조한다.
  3. 또한 newObj.__proto__.__proto__ 의 값 으로써 Object.prototype의 6개의 매소드도 참조 된다.

+ 인스턴스의 매소드를 호출 할 경우 해당 오브젝트의 __proto__ 프로퍼티의 참조 객체에서 호출 매소드를 찾게 되며 없을 경우 하위의 __proto__ 에서 다시 찾는 과정을 반복하게 된다.

+ __proto__ 와 prototype의 차이

 prototype 은 빌트인  Object 에 정의 되어있는 객체(프로퍼티의 집합)이다. 또한 prototype이 정의 되어있는 Object는 인스턴스의 생성이 가능하다.

__proto__ 는 인스턴스가 생성 될 때 Object prototype 객체의 주소를 연결시켜주는 프로퍼티이다. 이로써 생성한 인스턴스는 __proto__를 참조하여 해당 인스턴스 타입에 해당하는 Object의 매소드를 사용할 수 있게 된다.

위와 같이 객체에 대한 강의를 들으면서 강사님이 설명해 주신 내용을 이해 했는데 혹시 제가 잘못 이해한 부분이 있을 까요 ?

그동안 C언어를 통해 공부하다 새롭게 자바스크립트를 공부하고 있는데 정말 흥미롭네요 강사님 덕에 흥미를 느낄 수 있었던거 같습니다 감사합니다.

답변 1

답변을 작성해보세요.

0

정리가 잘 되었습니다. 짝짝. 뉘앙스 차이가 조금 있지만 크게 영향을 미치지 않으며 계속 이렇게 정리하면서 가면 미미한 뉘앙스까지 정리될 것 같습니다. 좋습니다. 계속 이렇게 정리하면서 나아가세요.