객체(object)는 이름 붙은 값들의 모음이다. 보통 이 이름 붙은 값들을 객체의 프로퍼티(property)라고 부른다(종종 객체의 필드(field)라고 부르기도 하지만 다소 혼동을 줄 여지가 있다).
객체 프로퍼티를 참조하려면 객체 이름을 쓰고 이어서 마침표와 프로퍼티 이름을 적어 주면 된다.
예를 들어, image라는 이름의 객체에 width와 height라고 이름 붙은 프로퍼티 두 개가 있다면 다음과 같은
방식으로 이 프로퍼티들을 참조할 수 있다.
image.height
객체 프로퍼티는 많은 부분이 자바스크립트 변수와 닮았다. 프로퍼티는 배열이나 함수, 객체를 포함안 어떠한 타입의 값이라도 담을 수 있다. 여러분은 다음과 같은 자바스크립트 코드를 보게 될 것이다.
이 코드는 어떤 객체의 button 프로퍼티를 참조하는데 그 객체는 다시 document라는 객체의 myform 프로퍼티에 저장되어 있다. 앞에서 언급한 바와 같이 함수가 객체 프로퍼티로 저장될 경우 그 함수를 흔히 메서드라고 부르며, 이경우 객체 프로퍼티 이름은 메서드 이름이 된다. 객체 메서드를 호출할 때는 객체로부터 함수 값을 추출하기 위해 .을 사용하고 함수를 호출하기 위해 ()를 사용한다. 예를 들어, document라는 객체의 write() 메서드를 호출하려면 다음과 같이 코드를 작성하면 된다.
자바스크립트에서 객체는 연관 배열(associative array)의 역할도 수행한다. 즉, 객체는 임의의 문자열에
임의의 값을 연결한다. 객체가 이러한 방식으로 사용될 경우 객체 프로퍼티에 접근할 때는 다른 문법을
사용한다. 이때는 접근하려는 프로퍼티 이름을 나타내는 문자열을 대괄호로 둘러싸면 된다.
이 문법을 사용하여 다음과 같이 앞에서 본 image 객체 프로퍼티에 접근할 수 있다.
image["height"]
연관 배열은 많은 프로그래밍 기법에 사용되는 아주 효과적으로 사용될 수 있는 데이터 타입이다.
7장에서는 전통적인 방식대로 객체를 사용하는 방법과 연관 배열의 형태로 객체를 사용하는 방법을 설명한다.
1. 객체 생성
7장에서 살펴 볼 것이지만, 객체는 특수한 생성자 함수를 호출하여 생성할 수 있다.
예를 들어, 다음 몇 줄은 모두 객체를 생성하는코드를 보여준다.
var now = new Date();
var pattern = new RegExp("\\sjava\\s", "i");
일단 여러분이 원하는 객체를 생성하고 나면 마음대로 객체를 사용하고 프로퍼티 값을 설정할 수 있다.
point.x = 2.3;
point.y = 1.2;
2. 객체 리터럴
자바스크립트는 객체를 생성하고 프로퍼티를 지정하는 객체 리터럴 문법을 제공한다.
객체 리터럴은 (객체 초기자라고도 불린다) 콜론으로 구별되는 프로퍼티 이름/값 쌍들이 다시 쉼표로 분리된 목록이다. 따라서 앞에서 본 point 객체를 다음과 같이 생성하고 초기화할 수 있다.
객체리터럴은 중첩될 수 있다. 예를 들어,
lowerRight : { x: 4, y: 4}
};
마지막으로 객체 리터럴 내에서 사용되는 프로퍼티 값이 상수일 필요는 없다.
프로퍼티 값으로 임의의 자바스크립트 표현식을 사용할 수 있다.
또한 객체 리터럴 내의 프로퍼티 이름으로 식별자뿐만 아니라 문자열도 사용할 수 있다.
'lowerRight' : { x:(point.x + side), y : (point.y+side) }};
3. 객체 변환
null이 아닌 객체가 불리언 문맥에서 사용되면 true로 변환된다. 객체가 문자열 문맥에서 사용되면
객체의 toString() 메서드가 호출되고 이 메서드가 반환하는 문자열이 대신 사용된다. 객체가 숫자 문맥에서 사용되면 자바스크립트는 먼저 객체의 valueOf() 메서드를 호출한다. 이 메서드가 기본 데이터 타입에
해당하는 값을 반환하면 그값을 사용한다. 그러나 대부분의 경우 이 메서드는 객체 그 자신을 반환한다.
그럴 경우 자바스크립트는 반환되는 객체에 toString() 메서드를 호출한 후 반환되는 문자열을 숫자로
변환하려고 시도한다. 객체와 기본 데이터 타입 간 변환에는 약간 특별한 부분이 존재하는데 이것에 관해서는
이 장의 끝부분에서 다시 논의할 것이다.
'IT_Programming > JavaScript' 카테고리의 다른 글
자바스크립트 완벽가이드 - 3.7 null, 3.8 undefined (0) | 2010.07.04 |
---|---|
자바스크립트 완벽가이드 - 3.6 배열 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 3.4 함수 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 3.3 불리언 값 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 3.2 문자열 (0) | 2010.07.04 |