자바스크립트/Node JS

[Node JS] 라우터 - 컨트롤러 - 백엔드 연결

KIMJAVAN 2024. 1. 10. 11:04
728x90

메소드 정의와 객체에서 메소드를 추가하는 것의 차이

 

submitPost = async ... 같은 방식으로 메소드를 정의하고 basicModel.submitPost = async ... 같은 방식으로 객체에 메소드를 추가하는 것 사이에는 중요한 차이점이 있습니다. 이 두 방식은 코드의 구조와 스코프, 모듈화 방식에서 차이를 보입니다.

  1. 스코프와 구조:
    • submitPost = async ...로 정의하는 경우, submitPost는 현재 스코프(일반적으로는 전역 스코프 또는 현재 모듈의 최상위 스코프)에 함수를 추가합니다. 이 경우 submitPost 함수는 독립적으로 존재하며, 다른 객체나 모듈의 일부가 아닙니다.
    • basicModel.submitPost = async ...로 정의하는 경우, submitPost는 basicModel이라는 객체의 속성(메소드)으로 추가됩니다. 이 경우 submitPost는 basicModel 객체의 일부가 되며, 이 객체를 통해서만 접근할 수 있습니다.
  2. 모듈화와 조직화:
    • 객체에 메소드를 추가하는 방식(basicModel.submitPost = async ...)은 관련 기능들을 하나의 객체 안에 모듈화하여 조직화하는 데 유리합니다. 이는 코드의 가독성과 유지보수성을 높이고, 기능적으로 연관된 메소드들을 그룹화하는 데 도움을 줍니다.
    • 반면, 독립적으로 함수를 정의하는 방식(submitPost = async ...)은 그 함수가 다른 함수나 객체와 연관성이 적을 때 유용할 수 있습니다. 하지만, 여러 함수가 서로 관련되어 있을 경우, 이 방식은 코드의 조직화에 있어서 불리할 수 있습니다.
  3. 재사용성과 확장성:
    • 객체 기반의 접근 방식은 재사용성과 확장성 측면에서 유리합니다. 객체에 새로운 메소드를 추가하거나 기존 메소드를 변경하는 것이 쉽고, 객체 자체를 다른 부분에서 재사용할 수 있습니다.
    • 전역 함수나 독립적인 함수는 특정 스코프나 환경에서만 사용되기 쉽고, 이를 다른 컨텍스트나 객체로 옮기는 것이 더 복잡할 수 있습니다.

따라서, basicModel.submitPost = async ... 같은 방식은 특히 객체 지향적인 접근이 필요하거나, 여러 관련 기능을 하나의 객체에 묶어 관리하고자 할 때 유리합니다. 이는 코드의 가독성, 조직화, 유지보수성 측면에서 많은 이점을 제공합니다.