프로토타입은 객체지향 프로그래밍에서 일반적으로 사용되는 개념입니다. 하지만 프로토타입을 활용한 함수형 프로그래밍은 강력한 기법입니다. 이 기법을 사용하면 함수를 재사용하고 조합하여 더 간결하고 유연한 코드를 작성할 수 있습니다.
프로토타입 기반 객체지향 프로그래밍
자바스크립트는 프로토타입 기반 객체지향 프로그래밍을 지원합니다. 이는 객체간에 프로토타입 체인을 통해 속성과 메서드를 상속할 수 있다는 것을 의미합니다. 함수형 프로그래밍에서는 이러한 프로토타입 체인을 이용하여 함수를 재사용하고 조합합니다.
예를 들어, 다음과 같은 함수를 생각해보겠습니다.
function add(x, y) {
return x + y;
}
위의 add
함수는 단순히 두 수를 더해서 결과를 반환하는 함수입니다. 이 함수를 프로토타입으로 사용하여 다른 함수를 만들 수 있습니다.
function multiplyByTwo(x) {
return x * 2;
}
multiplyByTwo.__proto__ = add;
console.log(multiplyByTwo(4)); // 8
console.log(multiplyByTwo(6)); // 12
multiplyByTwo
함수의 __proto__
프로퍼티에 add
함수를 할당함으로써, multiplyByTwo
함수는 add
함수의 기능을 상속받게 됩니다. 이를 통해 multiplyByTwo
함수는 두 수를 더하는 동작을 수행하면서 간단한 곱셈 연산을 함께 처리할 수 있습니다.
함수 재사용과 조합
프로토타입 기반 객체지향 프로그래밍을 활용하면 여러 함수를 조합하여 새로운 함수를 생성할 수 있습니다. 이를 통해 코드를 재사용하고 고차함수를 만들 수 있습니다.
예를 들어, 다음과 같은 세 개의 함수가 있다고 가정해봅시다.
function add(x, y) {
return x + y;
}
function multiply(x, y) {
return x * y;
}
function subtract(x, y) {
return x - y;
}
이제 이 함수들을 조합하여 새로운 함수를 만들어보겠습니다.
function calculate(x, y, operation) {
return operation(x, y);
}
console.log(calculate(5, 2, add)); // 7
console.log(calculate(5, 2, multiply)); // 10
console.log(calculate(5, 2, subtract)); // 3
calculate
함수는 두 수와 연산 함수를 받아 해당 연산을 수행한 결과를 반환합니다. 이를 통해 간단하게 함수를 재사용하고 조합하여 다양한 계산을 수행할 수 있습니다.
결론
프로토타입을 활용한 함수형 프로그래밍 기법은 코드의 재사용성과 유연성을 높여줍니다. 기본 함수를 프로토타입으로 사용하여 다양한 함수를 조합하는 방식은 코드의 중복을 줄이고 가독성을 높일 수 있습니다. 함수형 프로그래밍에 익숙한 개발자라면 프로토타입을 활용한 이러한 기법을 사용해보고 코드의 효율성을 향상시켜보세요!
참고 자료:
- MDN Web Docs - JavaScript 프로토타입
- Functional-Light JavaScript (#함수형프로그래밍 #프로토타입)