ECMAScript(JavaScript)의 Object와 Property

JavaScript(이하 ECMAScript)를 처음 접하면 프로토타입 개념이 혼란을 일으키곤 하는데, Object가 어떻게 생성되고 프로퍼티를 어떻게 읽고 쓰는지만 확실히 기억해두면 혼란을 피할 수 있다.

Object 생성하기 (( ECMA-262 13.2.2 ))

ECMAScript에서 오브젝트란 프로퍼티들의 정렬되지 않은 컬렉션이다. 오브젝트는 생성자를 통해 만들어진다. Foo()라는 생성자가 있다면 다음의 방법으로 만들 수 있다.

x = new Foo();

이 때 생성자가 prototype이란 이름의 프로퍼티를 갖고 있다면 그 프로퍼티의 값이 생성되는 오브젝트의 프로토타입이 된다.

Foo.prototype = new Number();
x = new Foo();

new Number() 오브젝트는 x의 프로토타입이므로, x 오브젝트에 어떤 property를 추가하지 않았더라도 그 property가 new Number() 오브젝트에 존재한다면 x 오브젝트의 프로퍼티처럼 읽게 된다. 다음 절을 읽어보자.

프로퍼티 읽기/쓰기

ECMASCript에서 오브젝트의 프로퍼티의 읽기/쓰기는 다음과 같이 동작한다.

읽기

프로퍼티를 읽는 내부 메소드를 GET이라고 한다. GET은 다음과 같이 동작한다. (( ECMA-262 8.12.3 ))

어떤 오브젝트에 대해 GET P를 하면,

  1. 이름이 P인 프로퍼티가 있으면 그 프로퍼티의 값을 반환
  2. 없으면 [[Prototype]] 내부 메소드로 프로토타입을 가져오고 null이 아니라면 [[Get]] (P) 를 수행, null이면 undefined 반환.

쓰기

프로젝트를 쓰는 내부 메소드를 PUT이라고 하는데, PUT은 프로퍼티 존재 유무 확인하고 그런 거 없이 그냥 현재 오브젝트에 바로 값을 쓴다. 쓸 수 없다면 예외를 던진다. (( ECMA-262 8.12.5 ))

Advertisements

ECMAScript(JavaScript)의 Object와 Property”에 대한 1개의 생각

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중