함수와 객체, 메소드

이현동·2023년 1월 19일
0

함수와 메서드의 차이는 무엇일까? 가장 핵심적인 차이는 무엇이고, 왜 굳이 이렇게 구분했을까?

함수와 메서드의 차이

함수와 메서드의 차이는 보통 함수는 '개발자가 미리 정의한 동작을 수행하는 코드 뭉치'이고, 메서드는 '객체의 프로퍼티에 할당된 함수'라고 한다.
함수는 자체로 독립적인 기능을 수행하는 반면, 메서드는 자신을 호출한 대상 객체에 관한 동작을 수행하는 것이다.
하지만 자바스크립트에서 함수와 메서드의 가장 중요한 차이는 어떤 함수를 객체의 프로퍼티에 할당한다고 해서 그 자체로 무조건 메소드가 되는 것이 아니라 객체의 메소드로서 호출할 경우에서만 메서드로 동작한다. 메서드로서 호출하지 않으면 함수로 동작하게 된다.


var obj = {
    method: var func = function (x) {
    console.log(this, x);
	};,
};
func(1); 

obj.method(2);

자바스크립트에서 일급객체란? 왜 그건 일급객체일까?

우선 일급객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.

일급객체의 조건
1. 변수에 할당할 수 있다.
2. 다른 함수를 인자로 전달 받는다.
3. 다른 함수의 결과로서 리턴될 수 있다.

JavaScipt의 함수는 모든 조건을 충족하기 때문에 1급 객체이다.
Javasctip에서는 함수를 그냥 주고 받을 수 있다는 것 뿐이지만 이것이 아주 큰 차이점을 만든다.
이를 통해 고차 함수가 가능하다는 점이고 이 때문에 JavaScript의 each, filter, map, sort 등 편리한 함수들이 많은 것이다.


참고자료

일급객체, 위키백과
코어 자바스크립트 (p.69~71), 정재남
일급객체란?, reveloper-1311
JavaScript의 함수는 1급 객체(first class object)이다, 최정렬

profile
https://hdlee.dev

0개의 댓글