21.1 자바스크립트 객체의 분류

<aside> 💡

자바스크립트 내에서의 객체는 다음과 같이 크게 3가지의 객체로 분류할 수 있다.

  1. 표준 빌트인 객체

    ⇒ ECMAScript 사양에 정의된 객체이다.

  2. 호스트 객체 ⇒ ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행 환경에서 추가로 제공하는 객체를 말한다.

  3. 사용자 정의 객체

⇒ 표준 빌트인 객체와 호스트 객체처럼 기본 제공되는 객체가 아닌 사용자가 직접 정의한 객체를 말한다.

</aside>

21.2 표준 빌트인 객체

<aside> 💡

자바스크립트에서는 Object, String, Number, Boolean, Symbol 등 40여 개의 표준 빌트인 객체를 제공한다.

Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴트를 생성할 수 있는 생성자 함수 객체이다.

따라서 표준 빌트인 객체인 String, Number, Boolean, Function, Array, Date는 생성자 함수로 호출하여 인스턴스를 생성할 수 있다 !

</aside>

[ 예제 21- 01 ]

//String 생성자 함수에 의한 String 객체 생성
const strObj = new String('Lee'); // String {"Lee"}
console.log(typeof strObj); // object

// Number 생성자 함수에 의한 Number 객체 생성
const numObj = new Number(123); // Number {123}
console.log(typeof Number); // object

// Boolean 생성자 함수에 의한 Boolean 객체 생성
const boolObj = new Boolean(true); // Boolean {true}
console.log(typeof boolObj); //object

// Function 생성자 함수에 의한 Function 객체(함수) 생성
const func = new Function('x', 'return x * x'); // f anonymous(x)
console.log(typeof func); //function

// Array 생성자 함수에 의한 RegExp 객체 (정규 표현식) 생성
const regExp = new RegExp(/ab+c/i); // /ab+c/i
console.log(typeof regExp); // object

// Date 생성자 함수에 의한 Date 객체 생성
const date = new Date(); // Fri May 08 2020 10:43:25 GMT+0900 (대한민국 표준시)
console.log(typeof date); // object

<aside> 💡

생성자 함수인 표준 빌트인 객체가 생성한 인스턴스의 프로토타입은 표준 빌트인 객체의 prototype 프로퍼티에 바인딩된 객체이다.

따라서, 표준 빌트인 객체의 프로토타입에 있는 다양한 기능의 빌트인 프로토타입 메서드를 사용할 수 있다 !

</aside>

[ 예제 21-02 ]

// String 생성자 함수에 의한 String 객체 생성
const strObj = new String('Lee'); // String("Lee")

// String 생성자 함수를 통해 생성한 strObj 객체의 프로토타입은 String.prototype 이다.
console.log(Object.getprototypeOf(strObj) === String.prototype); // true

[ 예제 21 - 03 ]

// Number 생성자 함수에 의한 Number 객체 생성
const numObj = new Number(1,5); // Number(1,5)

// toFixed는 Number.prototype의 프로토타입 메서드다.
// Number.prototype.toFixed는 소수점 자리를 반올림하여 문자열로 반환한다.
console.log(numObj.toFixed()); // 2

// isInteger는 Number의 정적 메서드이다.
// Number.isInteger는 인수가 정수(integer)인지 검사하여 그 결과를 Boolean으로 반환한다.
console.log(Number.isInteger(0.5)); // false

21.3 원시값과 래퍼 객체

<aside> 💡

원시 값은 객체가 아니므로 프로퍼티나 메서드를 가질 수 없다.

</aside>