객체는 어떻게 보면 자바스크립트 그 자체
자바스크립트 자체가 객체기반으로 돌아가는 스크립트 언어
데이터(주체)와 그 데이터에 관련되는 동작(절차,방법,기능)을 모두 포함하고 있는 개념
ECMA5에서 프로퍼티는 객체의 일부로 이름과 값 사이 연결을 의미라고 정의한다.
한마디로 프로퍼티는 객체의 속성을 나타내는 접근 가능한 이름과 활용 가능한 값을 가지는 특별한 형태이다.
Object 객체는 Built-in 객체로서 최상위레벨의 객체((Top-Level-Object) 이다. 즉 모든 객체는 이 Object 객체에서 파생되어 나온 확장형태인 것이다.
Object 객체라는 최상위 객체를 껍대기로 파생되는 객체들은 Object 객체가 가지고 있는 기본적인 구성요소를 상속받게 된다.
사실 자바스크립트의 모든 객체가 자유롭게 확장될수 있는 이유도 Object 객체가 가진 특별한 구성요소 때문이다.
Object 객체가 가진 특별한 구성요소들이란 바로 constructor, prototype 이라는 프로퍼티와 hasOwnProperty(), toString(), isPrototypeOf() 라는 메소드들이다.
자바스크립트의 모든 객체가 Object 에서 파생되었다는 것은 객체를 생성할때 사용된 생성자 함수의
prototype을 저장하는 proto 를 통해 알수 있으며 객체들이 기본적으로 가지는 메소드들을 보면서 확인 할 수 있다.
var obj = {
_a: 1,
get a() {return this._a;},
set a(v) {this._a = v;}
}
obj.a
> 1
obj.a = 2;
obj.a
> 2