본문 바로가기

javascript 객체의 속성과 메소드, 프로토타입 prototype

자바스크립트에서 사용하는 자료는 크게 기본 자료형(primitives)과 객체 자료형(object)로 구분할 수 있다. 

1. 객체 자료형.

속성과 메소드를 가질 수 있는 모든 것은 객체다. 예를 들면 배열도 객체다. 

배열도 속성을 가질 수 있음. 
함수도 속성을 가질 수 있음.
타입 확인

배열의 타입은 객체다. 배열인지 확인하려면 Array.isArray() 메소드를 사용한다. 

함수는 실행이 가능한 객체라는 특이한 자료로 function 타입을 지닌다. 함수는 객체의 특성을 완벽히 가지고 있으므로 일급 객체(first-class object)라고 부르기도 한다. 

2. 기본 자료형

자바스크립트에서는 실체가 있는 것(undefined와 null이 아닌 것) 중에 객체가 아닌 것을 기본 자료형이라 부른다. 숫자, 문자열, bool이 바로 기본 자료형이다. 이들은 객체가 아니므로 속성이나 메소드를 가질 수 없다. 

3. 기본 자료형을 객체로 선언하기. 

숫자, 문자열, bool과 같은 기본 자료형을 객체로 만드는 함수 = Number, String, Boolean

객체화된 숫자

객체화된 숫자는 이제 속성도 가질 수 있고, valueOf()와 같은 메소드도 사용할 수 있고, 그 자체로 연산도 가능하다.  

4. 프로토타입

prototype이란 객체 전용 틀이다. prototype 객체에 속성이나 메소드를 추가하면 모든 객체와 기본 자료형에서 해당 속성과 메소드를 사용할 수 있다. 자바스크립트에서는 편의상 기본자료형이 프로토타입의 메소드를 사용할 수 있게 하기 위해 일시적으로 객체로 승급시킨다. 때문에 프로토타입을 조작하면 기본자료형에도 적용이 가능하다.

Number 객체의 prototype에 속성 추가
Prototype으로 Number 객체에 메소드 추가하기.
프로토타입으로 문자열 메소드 추가하기.