IT_Programming/JavaScript

자바스크립트 완벽가이드 - 7.1 객체 생성하기

JJun ™ 2010. 7. 4. 20:55


객체는 복합 타입(composite datatype)이다.

 

즉 객체는 여러 값들들 결합한 것으로서 각 값에 붙은 이름을 사용하여 원하는 값을 저장하고 읽어올 수 있다. 다시 말하면 객체는 이름과 값으로 구성된 프로퍼티들의 집합이라고 할 수 있다. 객체로 결합되는 값들은 숫자나 문자열 같은 기본 타입이거나, 또 다른 객체일 수도 있다.


객체를 생헝하는 가장 쉬운 방법은 객체 리터럴을 사용하는 것이다. 객체 리터럴 이란 중괄호(cutly brace, {})안에 이름과 값을 한 쌍으로 하는 프로퍼티들을 콤마로 분리하여 연결한 리스트다. 프로퍼티 이름으로는 자바스크립트 식별자 혹은 문자열을 사용할 수 있으며, 프로퍼티 값으로는 상수나 자바스크립트 표현식을

사용할 수 있다. 다음은 객체 리터럴을 사용하여 객체를 생성하는 몇 가지 예를 보여 준다.

var empty = {};  // 객체 empty는 아무런 프로퍼티도 가지고 있지 않다.
var point = { x:0, y:0 };
var circle = { x:point.x, y:point.y+1, radius:2 };
var homer = {
"name" : "homer Simpson",
"age" : 34,
"married" : true,
"occupation" : "plant operator",
'email' : "mailto:homer@example.com"
};


객체 리터럴은 자바스크립트 표현시긍로서 평가될 때마다 새로운 객체를 생성하고 초기화한다.

즉 객체 리터럴이 루프 안에서 반복적으로 호출되는 함수 내에 있다면, 이 객체 리터럴은 비록 하나이지만

복수의 새로운 객체를 생성해낼 수 있다.


new 연산자를 사용하면 다른 방식으로 객체를 생성할 수 있다. new 연산자의 뒤에는 객체의 프로퍼티들을 초기화하는 생성자 함수의 호출이 뒤따라야 한다. 다음은 new 연산자를 사용하여 객체를 생성하는 몇 가지 예를 보여 준다.

var a = new Array();  // 빈 배열을 생성한다.
var d = new Data();  // 현재 날짜와 시간을 나타내는 객체를 생성한다.
var r = new RegExp("javascript", "i");  // 패턴 매칭을 위한 객체를 생성한다.


위의 예에 등장하는 Array(), Date(), RegExp() 생성자는 코어 자바스크립트의 내장(built-in) 함수다

(Array() 생성자는 이 장의 뒷부분에서 설명하며, 다른 내장 함수들에 대한 설명은 3부에서 찾을 수 있다).

Object() 생성자를 사용하면 리터럴 {}과 마찬가지로 빈 객체를 생성할 수 있다.


또한, 원하는 형태의 객체를 생성하고 초기화하기 위하여 임의 형태의 생성자 함수를 직접 정의하는 방법도 있다. 이러한 방법은 9장에서 알아본다.