Constructor 연산자

변수의 데이터형을 판단하는 typeof 연산자에 대해 설명하였다. 그러나 typeof 연산자는 어디까지나 기본형을 식별하는 것만 가능하다. 왜냐하면 참조형 값에 대해서, 예를 들어 Object, Array, Date 객체의 어느 인스턴스라고 해도 typeof 연산자는 한결같이 "object"로 밖에 돌려주지 않기 때문이다.

참조형(객체형)의 변수를 식별하려면 constructor 프로퍼티를 사용할 필요가 있다. 구체적인 예를 보도록 하자.

							var data = [];
							if (typeof (data) == "object" && data.constructor == Array) {
								$.print('변수 data는 Array 객체의 인스턴스다.');
							}
						

참고로, 엄밀히 말해 constructor 프로퍼티는 반환값으로 인스턴스의 생성에 사용된 생성자(Function)를 돌려준다. 객체명(문자열)을 돌려주고 있는 것은 아니기 때문에 data.constructor == 'Array' 와 같이 따옴표로 둘러싸면 안 된다.


instanceof 연산자

constructor 프로퍼티와 동등의 기능을 가지는 연산자로서 instanceof 연산자가 있다. 예를 들어, 위의 예제는 instanceof 연산자를 사용해서 다음과 같이 고쳐 쓸 수 있다.

							if (typeof (data) == "object" && data instanceof Array) {