객체 리터럴과 this

2020-07-13

해당 Post는 객체 리터럴과 this에 대해서 정리한 파일입니다.

자바스크립트 객체를 활용하면 비슷한 행위를 하는 코드를 묶어서 모듈화를 간단히 만들 수 있습니다.


자바스크립트 객체

자바스크립트 객체를 만드는 방법은 객체리터럴 방법, 생성자패턴이라는 것은 여러가지 속성을 통해서 객체를 만들 수 있는 또 다른 방법들이 있습니다.

자바스크립트에서는 객체 리터럴이라는 표현식을 이용해 객체를 만든 예제를 하나 살펴보겠습니다.

var healthObj = {
  name : "달리기",
  lastTime : "PM10:12",
  showHealth : function() {
    console.log(this.name + "님, 오늘은 " + this.lastTime + "에 운동을 하셨네요");
  }
}

healthObj.showHealth();

this

객체 안에서의 this는 그 객체 자신을 가리킵니다.

참고로, ES6에서는 객체에서 메서드를 사용할 때 ‘function’ 키워드를 생략할 수 있습니다.

const obj = {
   getName() {
     return this.name;
     },
  setName(name) {
      this.name = name;
    }
}
obj.setName("crong");
const result = obj.getName();

this 좀 더 알아보기

JavaScript에는 전역스크립트나 함수가 실행될 때 실행문맥(Execution context)이 생성됩니다.

(참고로 실제 실행은 브라우저내에 stack 이라는 메모리 공간에 올라가서 실행됩니다)

모든 context에는 참조하고 있는 객체(thisBinding이라 함)가 존재하는데, 현재 context가 참조하고 있는 객체를 알기 위해서는 this를 사용할 수 있습니다.

다시 말해, 함수가 실행될때 함수에서 가리키는 this 키워드를 출력해보면 context가 참조하고 있는 객체를 알 수 있습니다.

function get() {
    return this;
}

get(); //window. 함수가 실행될때의 컨텍스트는 window를 참조한다.
new get(); //object. new키워드를 쓰면 새로운 object context가 생성된다.