네이티브 객체(NAtive Objects)

 

자바스크립트 언어 규약(ECMAScript)명세의 정의된 내장 객체이다.

  • native object, built-in object라고 부른다.
  • 전역의 공통 기능을 제공하며 특정 환경(브라우저 등의 클라이언트 프로그램, 또는 Node.js 등의 런타임)에 종속되지 않는다.
  • 네이티브 객체는 모든 내장 객체(built-in object)를 포함하며 내장 네이티브 생성자는 각자의 .prototype객체를 가진다.
  • 프로토타입 객체에는 해당 객체의 하위 타입별로 고유한 로직이 담겨있다.

종류

  • String()
  • Number()
  • Boolean()
  • Array()
  • Object()
  • Function()
  • RegExp()
  • Date()
  • Error()
  • Symbol()

생성자 처럼 사용할 수 있지만 아닌 경우도 있다.

new String('Hello'); 
// string 'Hello'가 아닌 'Hello'를 감싸는 문자열 래퍼를 생성함

 

Object를 type으로 가지고 있는 값의 경우 [[Class]]라는 내부 프로퍼티가 추가로 있는데, 이때 이 프로퍼티를 접근하기 위해서는 Object.prototype.toString() 메서드에 값을 넣어 호출해야한다.

Object.prototype.toString.call([1,2,3]); 
// '[object Array]'

원시값의 경우 null과 undefined는 각각 Null, Undefined로 나타난다.

 

그 밖의 

문자열, 숫자, 불리언 등은 단순 원시값이며 자바스크립트는 원시값을 자동으로 객체 래퍼(Wrapper) 클래스로 박싱하여 오류를 방지한다.

var hello = 'Hello';
// 문자열은 원시값

hello.length; // 5
// 이때 length()로 접근하는데, 오류가 발생하지 않는다.

 

Symbol은 ES6에서 처음 선보인 새로운 원시값 타입이다.

충돌 염려없이 객체 프로퍼티로 사용가능한 특별한 '유일 값'이다.

Symbol은 프로퍼티명으로 사용할 수 있으나 프로그램 코드나 개발자 콘솔 창에서 실제 값을 보거나 접근하는 것은 불가능하다. (함수 객체의 정적 프로퍼티로 접근한다.)

Symbol은 네이티브 생성자이기 때문에 new를 붙이면 에러가 난다.

var hello = Symbol('Hello');

typeof hello // "symbol"

Object.getOwnPropertySymbols(hello); // [ Symbol(hello) ]

 

 

호스트 객체(Host Objects)

 

ECMASrcipt의 실행 환경을 만들기위해 window, XMLHTTPRequest 등 런타임환경(브라우저, Nodejs)에 의해 제공되는 객체를 말한다.

 

 

종류 (ex : 브라우저 환경일때)

ㄴ os, web browser를 실행환경에서 제공하는 호스트 객체라고 할 수 있음

  • window (BOM, browser object model)
    • 모든 객체의 유일한 최상위 객체인 전역객체, 브라우저 탭 또는 브라우저 창의 모델
  • document (DOM, document object model)
    • 현재 웹페이지의 모델
  • location
  • history
  • XMLHttpRequest
  • setTimeout
  • getElementsByTagName
  • querySelectorAll, …

참고

네이티브 객체 VS 호스트 객체
네이티브 객체 
호스트 객체와 네이티브 객체
호스트객체와 네이티브객체

 

+ Recent posts