자바스크립트 메서드

moomoj·2023년 4월 14일
0
post-thumbnail

자바스크립트는 원시값(문자열, 숫자 등)을 마치 객체처럼 다룰 수 있게 해줍니다.
원시값에도 객체에서처럼 메서드를 호출할 수 있지만, 원시값은 객체가 아니라는 것을 절대 잊지 마세요!

원시값:

  • 원시형 값입니다.
  • 원시형의 종류는 문자(string), 숫자(number), bigint, 불린(boolean), 심볼(symbol), null, undefined형으로 총 일곱 가지 입니다.

객체:

  • 프로퍼티에 다양한 종류의 값을 저장할 수 있습니다.
  • 대괄호 {}를 사용해 만들 수 있습니다. 여러 종류의 객체가 있는데, 함수도 객체의 일종입니다.

객체의 장점 중 하나는 함수를 프로퍼티로 저장할 수 있다는 것입니다.

let MaaMaaj = {
  name: "MooMooj",
  sayHi: function() {
    alert("친구야 반갑다!");
  }
};

MaaMaaj.sayHi(); // 친구야 반갑다!

객체 MaaMaaj를 만들고, 거기에 메서드 sayHi를 정의했습니다.



자바스크립트 창안자는 여기서 모순적이 상황을 해결해야했습니다.

  • 문자열이나 숫자와 같은 원시값을 다루어야 하는 작업이 많은데, 메서드를 사용하면 작업을 수월하게 할 수 있을 것 같습니다.
  • 그런데 원시값은 가능한 한 빠르고 가벼워야 합니다.
  • 객체는 원시값보다 무겁습니다.
  • 객체 내부 구조를 유지하기 위해 많은 추가 자원을 사용해야 합니다.

자바스크립트 창안자는 아래와 같은 방법을 사용해 해결책을 모색하였습니다.

  • 원시값은 원시값 그대로 남겨둬 단일 값 형태를 유지합니다.
  • 문자열, 숫자, 불린, 심볼의 메서드와 프로퍼티에 접근할 수 있도록 언어 차원에서 허용합니다.
  • 원시값이 메서드나 프로퍼티에 접근하려 하면 추가 기능을 제공해주는 특수한 객체 "원시 래퍼 객체(object wrapper)"를 만들어 줍니다.

"래퍼 객체"는 원시 타입에 따라 종류가 다양합니다. 각 래퍼 객체는 원시 자료형의 이름을 그대로 차용해, String,Number,Boolean, Symbol라고 부릅니다. 래퍼 객체 마다 제공하는 메서드 역시 다릅니다.




예제 코드를 보면서 알아봅시다.

let str = "Hello";

alert( str.toUpperCase() ); // HELLO

위 코드를 보며 원시값의 메서드를 사용 시 내부에서 어떠한 일이 일어나는지 알아봅시다.

  1. 문자열 str은 원시값이므로 원시값의 프로퍼티(toUpperCase)에 접근하는 순간 특별한 객체가 만들어집니다. (위에서 설명한 원시 래퍼 객체)
  2. 이 객체는 문자열의 값을 알고 있으며 유용한 메서드를 가지고 있습니다.( 예 : toUpperCase())
  3. 메서드가 실행되고, 새로운 문자열이 반환됩니다.
  4. alert 창에 이 문자열이 출력됩니다.
  5. 특별한 객체는 파괴되고, 반한된 원시값 str만 남습니다.

이러한 내부 프로세스를 통해 원시값을 가볍게 유지하면서 객체처럼 메서드를 호출 할 수 있습니다!

출처 - 자바스크립트 튜토리얼

profile
moomoj

0개의 댓글