'메서드(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")
같이 말이다.
🍳 함수의 개념을 요리로 비유한다면?
- 요리로 치면 스파게티 만들기, 밥 짓기, 와인 만들기 이런 것도 모두 함수이며
- 요리 방법(썰기, 다지기, 찌기, 삶기)도 함수의 일종이라고 할 수 있다.
🔹 프로그래밍의 함수는 더 자유롭다!
또한 여기서 더 나아가서 프로그래밍에서는 특정 함수가 수행할 작업을 코드를 통해 직접 만드는 것도 가능한데
프로그램 자체가 제공하는 정형화된 함수(썰어라, 생선을 구워라) 같은 것 말고도
춤을 추다가 고등어를 구워서 식탁에 올려 놓아라 같은 특정 행동을 지정한 함수도 만들 수 있다.
메서드의 종류
메서드는 크게 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("보리"); // 정적 메서드 호출
'자바 스크립트(java script) > 개념 조각' 카테고리의 다른 글
data-* 속성 및 dataset 속성에 대한 정리 (0) | 2025.03.22 |
---|---|
메모리 구조 (0) | 2025.03.22 |
자바스크립트에서 DOM 사용시 알아둘 것 (0) | 2025.03.20 |
람다 함수lambda function)와 화살표 함수(Arrow Function) (0) | 2025.03.20 |
메서드 체이닝 (Method Chaining) (0) | 2025.03.20 |