함수와 메서드의 차이는 호출 방식에 따라 다르다.
함수를 호출하는 객체가 있는 경우 메서드
함수를 호출하는 객체가 없는 경우 함수
예를 들어보자.
let obj = { show1: function(){ console.log('show1() 메서드 호출') } } function show2(){ console.log('show2() 함수 호출') }
위 예시에서 show1() 함수는 객체 obj의 프로퍼티이며, obj객체를 통해 호출했으므로 메서드이다.
반면 show2()함수는 객체를 생성하지 않고 직접 호출했으므로 함수이다.
위 예시에서 show2() 함수는 객체 없이 호출되는 것처럼 보이지만, show2() 함수를 호출하는 객체가 존재한다. 전역 범위에서 함수가 선언되는 경우, 전역 객체인 window의 프로퍼티가 된다.
그렇다면 함수(show2)도 window 객체의 프로퍼티니까 메서드 아닌가???
정답은 메서드가 아니라 함수이다. 그 이유는 Javascript에서 메서드
라는 개념은 사용자가 정의한 객체의 프로퍼티
가 함수인 경우이다. 즉, 사용자가 만든 객체의 유무에 따라 함수와 메서드로 나누는 것이다.