아니 근데 메소드와 함수의 차이가 뭔데?

c0ng·2023년 2월 3일
0


대장 농부님 설명을 듣다보면 자꾸 헷갈리는게 있다.
내가 아는건 함수 function 인데, OOP를 사용하시는 대장님은 자꾸 method를 이야기하신다.

JAVA와 Javascript가 당연히 다른건 아는데, 이놈의 객체지향 때문에 내 머릿속에서 자꾸 꼬인다.
이리저리 꽈배기처럼 꼬인다구요 흑흑


난 함수가 너무 싫어 편에서 "이렇게 객체의 함수 프로퍼티를 메서드 methods라고 불렀었다."

라고 하는걸 보니, 객체 안에 있는 함수 프로퍼티를 메서드 라고 부르는거 같은데,
구글링 한 결과로는 이게 너무 확대해석이라는 거다.


Method와 function의 차이

Stack overflow 발췌

  1. 함수가 메소드를 아우르는 포괄적인 용어라고 한다.
  2. 함수는 객체로부터 독립적이고, 메소드는 객체에 종속적이다.
  3. 메소드는 거의 모든 면에서 함수와 동일하지만, 요로코롬 2가지 다른점이 있다
    1. 메소드는 호출된 객체에 암시적으로 전달된다.
    2. 메소드는 클래스 안에 있는 data를 조작할 수 있다. 뭔말이고
  4. '객체(클래스)로부터 독립적인가 아닌가'가 함수와 메소드를 나누는 기준이다.
  5. 호출 방식에 따라 다르다
    • 함수를 호출하는 객체가 있는 경우를 메서드
    • 함수를 호출하는 객체가 없는 경우를 함수

함수를 호출하는 전역객체

함수를 전역 범위에서 선언하는 경우 window 객체로 호출 할 수 있음

function show2() {
  console.log('show2() 함수 호출');
};

show2();
window.show2();
"전역 객체인 window 객체로 show2() 함수를 호출했으므로 show2() 함수는 메서드가 아닌가요?"

라고 생각할 수 있지만,

JavaScript에서 메서드라는 개념은 사용자가 정의한 객체의 프로퍼티가 함수인 경우임.
따라서 show2() 함수는 메서드가 아니라 함수입니다.

메서드를 변수에 할당

let obj = {
  show1: function() {
    console.log('show1() 메서드 호출');
  }
}

obj.show1(); // 메서드

let funcCall = obj.show1;
funcCall();  // 함수

funcCall에 메서드를 할당했지만, funcCall을 호출하는 객체가 존재하지 않으므로 funcCall은 함수임

profile
농부 대장님 아래서 일하는 잡초

0개의 댓글