객체

keis·2019년 12월 6일

JavaScript

목록 보기
3/8

객체란?

객체는 어떻게 보면 자바스크립트 그 자체

자바스크립트 자체가 객체기반으로 돌아가는 스크립트 언어

데이터(주체)와 그 데이터에 관련되는 동작(절차,방법,기능)을 모두 포함하고 있는 개념

프로퍼티

ECMA5에서 프로퍼티는 객체의 일부로 이름과 값 사이 연결을 의미라고 정의한다.

한마디로 프로퍼티는 객체의 속성을 나타내는 접근 가능한 이름과 활용 가능한 값을 가지는 특별한 형태이다.

메소드

  • 문자열과 배열 객체는 모두 length 프로퍼티와 더불어 함수 값을 가리키는 프로퍼티의 수를 담고 있다.
  • 객체가 가지고 있는 동작
  • 함수와 메소드의 차이점
    함수와 메소드는 서로 일련의 동작을 실행한다는 점에서는 동일하나, 메소드는 객체를 통해서 수행된다. 즉, 그 동작을 수행하는 주체가 객체이며, 그 동작을 수행하기 위해서는 객체에게 그 동작을 수행하라고 지시해야 함.
    반면, 함수는 그 동작을 수행하기 위해 객체에게 어떤 동작을 수행하라고 명령하지 않아도 된다. 그 이유는 함수 자체가 그 동작을 정의한 함수 객체이기 때문이다.

Built-in Object(자바스크립트 내장 객체)

  • Global, Object, String, Number, Boolean, Date, Array, Math, RegExp, Error 등 많은 내장 객체들이 있다.
  • 자바스크립트 엔진이 구동되는 시점에서 바로 제공되며, 자바스크립트 코드 어디에서든지 사용이 가능하다.

Native Object(브라우저 내장 객체)

  • 브라우저 내장 객체 역시 자바스크립트가 구동되는 시점에서 바로 사용이 가능하다.
  • 브라우저, 즉 자바스크립트 엔진을 구동하는 곳에 빌드되는 객체이다.
  • DOM(문서객체모델)과 BOM(브라우저객체모델)이 있다.
  • 브라우저마다 Native Object를 사용함에 있어서 구성을 달리하는 경우도 있다.

Host Object(사용자 정의 객체)

  • 말 그대로 사용자가 생성한 객체
  • 생성자 또는 객체 리터럴을 통해 사용자가 객체를 정의

Object 객체

Object 객체는 Built-in 객체로서 최상위레벨의 객체((Top-Level-Object) 이다. 즉 모든 객체는 이 Object 객체에서 파생되어 나온 확장형태인 것이다.

Object 객체라는 최상위 객체를 껍대기로 파생되는 객체들은 Object 객체가 가지고 있는 기본적인 구성요소를 상속받게 된다.

사실 자바스크립트의 모든 객체가 자유롭게 확장될수 있는 이유도 Object 객체가 가진 특별한 구성요소 때문이다.

Object 객체가 가진 특별한 구성요소들이란 바로 constructor, prototype 이라는 프로퍼티와 hasOwnProperty(), toString(), isPrototypeOf() 라는 메소드들이다.

자바스크립트의 모든 객체가 Object 에서 파생되었다는 것은 객체를 생성할때 사용된 생성자 함수의

prototype을 저장하는 proto 를 통해 알수 있으며 객체들이 기본적으로 가지는 메소드들을 보면서 확인 할 수 있다.

Getter & Setter

var obj = {
    _a: 1,
    get a() {return this._a;},
    set a(v) {this._a = v;}
}
obj.a
> 1
  
obj.a = 2;
obj.a
> 2

0개의 댓글