객체를 만드는 가장 단순한 방법은 Object의 인스턴스를 만들고 여기에 프로퍼티와 메서드를 만드는 것입니다.
객체 리터럴 표기법 사용을 권장합니다.
person 객체는 name, age 두개의 프로퍼티가 있고, say()라는 메서드가 있습니다.
이러한 프로퍼티는 모두 자바스크립에서 프로퍼티의 행동을 정의하는 특징에 따라 생성됩니다.
이들 속성을 자바스크립트 엔진 내부에서 구현하므로 직접 접근할 수 있는 방법은 없습니다.
프로퍼티에는 데이터 프로퍼티와 접근자 프로퍼티 두가지 타입이 있습니다.
[[Configurable]] | 해당 프로퍼티가 삭제하거나 속성을 바꾸거나 접근자 프로퍼티로 변환할 수 있음을 나타냅니다. 기본값 true |
[[Enumerable]] | for-in 루프에서 해당 프로퍼티를 반환함을 나타냅니다. 기본값 true |
[[Writable]] | 프로퍼티의 값을 바꿀수 있음을 나타냅니다. 기본값 true |
[[Value]] | 프로퍼티의 실제 데이터 값입니다. 기본값은 undefined |
여기에서 name이라는 프로퍼티에 값 "John"을 할당했습니다.
즉 [[Value]] 속성이 "John" 이며 값이 바뀐다면 이위치에 저장됩니다.
기본 프로퍼티의 속성을 바꾸려면 Object.defineProperty() 메서드를 사용해야 합니다.
이메서드는 3개의 매개변수를 받습니다.
[[Configurable]] 속성을 한번 false로 하면 변경할 수 없으며 다시 true로 변경하려 한다면 예외가 발생합니다.
접근자 프로퍼티란 실제 값이 없고 get(),set() 메서드를 정의하여 값을 저장하고 반환하게 하는 프로퍼티 입니다.
[[Configurable]] | 해당 프로퍼티가 삭제하거나 속성을 바꾸거나 접근자 프로퍼티로 변환할 수 있음을 나타냅니다. 기본값 true |
[[Enumerable]] | for-in 루프에서 해당 프로퍼티를 반환함을 나타냅니다. 기본값 true |
[[Get]] | 프로퍼티를 읽을때 호출할 함수입니다. 기본값 undefined |
[[Set]] | 프로퍼티를 바꿀때 호출할 함수입니다. 기본값은 undefined |
접근자 프로퍼티는 명시적으로 정의할 수 없으며 Object.defineProperty() 메서드를 사용해야 합니다.
서술객체의 프로퍼티는 내부속성 이름과 동일합니다.(configurable, enumerable, get, set)
여러개의 프로퍼티를 동시에 수정할 수 있는 메서드입니다..
Object.defineProperties() 메서드를 사용하며, 서술객체를 이용해 여러 프로퍼티를 한번에 정의 합니다.
Object.getOwnPropertyDescriptor() 함수를 사용하여 프로퍼티의 서술 속성을 읽을 수 있습니다. 이메서드는 2개의 매개변수를 받습니다.