자바 스크립트(java script)/개념 조각

함수와 메서드(method)란?

lamarcK 2025. 3. 21. 17:29

'메서드(method)'는 객체 지향 프로그래밍에서 객체(object)와 연결된 함수를 의미한다.

즉, 특정 객체의 동작이나 기능을 수행하는 함수를 메서드라고 부른다.

📌 프로그래밍에서 함수란?

프로그래밍에서 함수는 특정 작업을 수행하는 코드 블록이다.

 

이 개념은 원래 수학에서 유래했으며, 수학에서는 보통 다음과 같은 형태로 표현된다.

  • f(x) = 2x + 1
    • x가 1이라면 2*1+1 = 3 / x가 5라면 2*5+1 = 11
  • f(x) = x + y

이처럼 수학의 함수는 입력값(변수)에 따라 계산된 결과를 반환하는 계산식인데,
프로그래밍의 함수도 이와 비슷하게 입력값(변수)을 받아 특정 연산을 수행하고 결과를 반환할 수 있다.

 

🔹 수학과 프로그래밍 함수의 차이점

 

하지만 수학에서 함수가 단순한 계산식이라면

프로그래밍의 함수는 단순한 계산을 넘어서 다양한 작업과 행동까지 포함한다.

 

예를 들면

  • 두 숫자를 더하는 함수 (add(a, b))
  • 문자열을 소문자에서 대문자로 변환하는 함수 (toUpperCase("hello") → "HELLO")

같이 말이다.

 

🍳 함수의 개념을 요리로 비유한다면?

  1. 요리로 치면 스파게티 만들기, 밥 짓기, 와인 만들기 이런 것도 모두 함수이며
  2. 요리 방법(썰기, 다지기, 찌기, 삶기)도 함수의 일종이라고 할 수 있다.

 

🔹 프로그래밍의 함수는 더 자유롭다!

 

또한 여기서 더 나아가서 프로그래밍에서는 특정 함수가 수행할 작업을 코드를 통해 직접 만드는 것도 가능한데

프로그램 자체가 제공하는 정형화된 함수(썰어라, 생선을 구워라) 같은 것 말고도

 

춤을 추다가 고등어를 구워서 식탁에 올려 놓아라 같은 특정 행동을 지정한 함수도 만들 수 있다.

메서드의 종류

메서드는 크게 2가지로 나눌수 있다. 인스턴스 메서드와 스태틱 메서드.

 

1. 인스턴스 메서드 (Instance Method)

  • 객체의 특정 인스턴스에서 호출되는 메서드이다.
  • 인스턴스 속성에 접근하거나 인스턴스별로 다른 동작을 수행한다.
  • this 키워드를 사용하여 해당 인스턴스의 속성에 접근할 수 있다.
  • 객체를 생성한 후에만 호출할 수 있다.

2. 정적 메서드 (Static Method)

  • 객체 생성자 함수 또는 클래스에서 직접 호출되는 메서드이다.
  • 인스턴스 속성에 접근하지 않고, 객체 전체에 대한 동작을 수행한다.
  • this 키워드는 인스턴스가 아닌 생성자 함수 또는 클래스를 가리킨다.
  • 인스턴스를 생성하지 않고도 호출할 수 있다.

1. 인스턴스 메서드 (Instance Method)

인스턴스 메서드는 특정 객체의 인스턴스에 연결된 메서드이다.

즉, 객체를 생성한 후에만 호출할 수 있는 메서드이다.

 

예를 들면 toUpperCase()라고 문자열을 모두 대문자로 변환하는 메서드가 있는데 대상이 되는 문자열이 없다면 당연히 해당 메서드는 사용하지 못할 것이다. 때문에 인스턴스 메서드는 이렇게 반드시 대상이 되는 객체가 있어야만 작동할 수 있는 메서드를 인스턴스 메서드로 분류한 것들이다.

 

const str = "hello";
const upperCaseStr = str.toUpperCase(); // "HELLO"
console.log(upperCaseStr);

 

 

2. 정적 메서드 (Static Method)

정적 메서드(Static Method)는 클래스 자체에 연결된 메서드이며, 인스턴스를 생성하지 않고도 호출할 수 있다.

즉, 클래스 이름으로 직접 호출하는 메서드이다.

 

정적 메서드(static method)는 클래스에 속하는 메서드로, 객체를 생성하지 않고도 호출할 수 있는 메서드를 말한다.
즉, 클래스 자체에 종속된 메서드이며, 인스턴스(객체) 없이도 실행할 수 있다.

 

내장 클래스인 math 클래스를 사용하는 내장 메서드도 존재하며

Math.random(): 0과 1 사이의 난수를 반환한다. //예시: Math.random() → 0.12345...
Math.floor(x): x보다 작거나 같은 가장 큰 정수를 반환한다. //예시: Math.floor(3.9) → 3

 

직접 만든 클래스를 기반으로 직접 메서드를 만들 수도 있다.

class Dog {
  constructor(name, breed) {
    this.name = name;
    this.breed = breed;
  }

  bark() { // 인스턴스 메서드
    console.log(`${this.name}가 멍멍 짖습니다.`);
  }

  static barkStatic(name) { // 정적 메서드
    console.log(`${name}가 멍멍 짖습니다.`);
  }
}

const myDog = new Dog("해피", "푸들");

myDog.bark(); // 인스턴스 메서드 호출
Dog.barkStatic("보리"); // 정적 메서드 호출