Javascript OOP - 객체 생성 방법 1

객체를 생성하는 가장 쉬운 방법은 객체 리터럴을 사용하는 것이다.
var book = {title:'Javascript', price:30000};
객체 리터럴은 자바스크립트 표현식으로 평가될 때마다 새로운 객체를 생성하고 초기화한다. 객체 프로퍼티 값에 접근하기 위해서는 마침표(.) 연산자를 사용한다.
book.title;
자바스크립트 객체는 연관 배열이기 때문에 아래처럼 프로퍼티에 접근할 수도 있다.
book['title'];
프로퍼티 이름을 문자열로 표현함으로써 아래와 같은 구문이 가능하다.
for(i = 0; i < 10; i++) {
     addToBookShelf(book[seriesName + i]);
}
이런 접근 방식은 프로퍼티 생성, 삭제에 있어서 매우 유연성 있게 처리할 수 있다. 이것은 Java나 C++ 등 타입 제약이 엄격한 프로그래밍 언어에는 불가능하지만 자바스크립트는 타입 제약이 느슨하기 때문에 이러한 접근 방식이 가능하다.

자바스크립트 객체는 연관 배열(associative array)이기 때문에 프로퍼티들을 열거할 수 있다. (연관 배열은 key와 value가 쌍으로 이루어진 데이터라는 점에서 HashMap 또는 Dictionary와 같다.)
for(var property in book) {
    console.debug(property);
}
Object() 생성자를 사용하면 빈 객체를 생성할 수 있다. (생성자에 대한 자세한 내용은 다음에..)
var book = new Object();
이렇게 생성된 빈 객체에 프로퍼티를 동적으로 설정할 수 있다.
book.title = 'Javascript';
book.price = 20000;
book.sale = function () {
    return book.price * 0.9;
};
sale 함수는 아래처럼 호출할 수 있으며 리턴값은 18000이다.
book.sale();

객체는 중첩될 수 있다.
var book = {};
book.author = 'Kwon';
book.series = new Object();
book.series.title = 'chapter 1';

delete 연산자를 사용하면 프로퍼티를 삭제할 수도 있다.
delete book.sale;

댓글

이 블로그의 인기 게시물

미적분과 차원

자바 로깅

apache rewrite_module 로그