JavaScript Factory Functions : 객체를 구성하기위한 강력한 패턴을 구축하십시오
JavaScript Factory 함수는 객체를 반환하는 함수이며 또는 키워드를 사용하지 않고도 여러 유사한 객체를 생성 할 수 있습니다. 이 기사는 파라 메트릭 팩토리 기능, 종합 가능한 공장 기능, 비동기 공장 기능 및 고급 공장 기능을 포함하여 몇 가지 공장 기능을 탐색하여보다 유연하고 쉽게 구축하는 방법을 보여주는 방법을 보여줍니다.
핵심 개념
공장 함수 :
객체의 함수를 반환합니다.
매개 변수화 된 공장 함수 : new
객체 구조를 반환하는 공장 함수를 변경하려면 매개 변수를 수락하십시오. this
복합 공장 기능 :
다른 공장 기능을 결합하여 복잡한 물체의 공장 기능을 구축합니다.
비동기 공장 기능 : 비동기 작업을 처리하겠다는 약속의 공장 기능을 반환합니다.
고급 공장 기능 :
공장 함수는 기능 매개 변수로 전달되며, 인핸서를 생성하는 데 사용됩니다 (예 : 타임 스탬프 추가 또는 불변의 개체 생성). -
단순 예
간단한 공장 기능 :
함수가 호출 될 때마다 새 Jelly Object 인스턴스가 반환됩니다. 기능 이름은 반드시 - 로 시작하지는 않지만 코드의 가독성을 향상시킬 수 있습니다.
매개 변수화 공장 함수
모든 함수와 마찬가지로 공장 함수는 반환 된 객체의 구조를 변경하기 위해 매개 변수를 수락 할 수 있습니다.
이론적으로 많은 매개 변수를 사용하여 매우 구체적인 중첩 객체를 만들 수 있지만 조합의 아이디어에 맞지 않습니다. -
복합 공장 함수
하나의 공장 기능을 다른 복잡한 공장 기능의 조합으로 정의함으로써 더 작고 재사용 가능한 조각으로 나눌 수 있습니다. 예를 들어, 이전 젤리 및 아이스크림 공장 기능을 기반으로 디저트 공장 기능을 만들 수 있습니다.
팩토리 기능을 결합하여 - 또는 를 사용하지 않고 복잡한 구조를 구축 할 수 있습니다.
조합 vs. 상속
-
조합은“has-a”관계에 더 기울어 진 경향이있는 반면, 상속은“IS-A”관계에 더 경향이있는 경향이 있습니다. 예를 들어, 상속이있는 사소한 일을 구현하십시오 :
및 사소한 일을 구현하기 위해 조합을 사용하십시오
비동기 팩토리 기능
모든 공장 기능이 데이터를 즉시 반환 할 수있는 것은 아닙니다. 일부 공장 기능은 먼저 데이터를 가져와야 할 수도 있습니다. 이 경우 약속을 반환하는 공장 기능을 사용할 수 있습니다.
너무 깊은 둥지를 피하기 위해 비동기 공장 함수는 여러 독립 공장 기능으로 분해 된 다음 결합 할 수 있습니다.
를 사용하여 약속을 반환하는 여러 공장 기능을 결합 할 수 있습니다.
함수 및 방법
공장 함수는 일반적으로 데이터와 계산을 함께 혼합하기 때문에 방법이 포함 된 객체를 반환하지 않습니다. 공장 기능은 데이터 객체 생성에 중점을두고 데이터 조작의 논리는 독립적 인 기능으로 처리됩니다.
고급 공장 함수
공장 함수를 통과하는 고차 기능이 강력한 제어를 달성 할 수 있으므로. 예를 들어, 고급 공장 기능을 사용하여 인핸서를 만들 수 있습니다.
이 인핸서는 기존의 공장 기능을 취해 타임 스탬프가 포함 된 인스턴스를 반환하는 공장 기능으로 래과합니다.
결론
공장 함수는 상속보다는 구성을 사용하도록 장려하는 간단하고 강력한 패턴으로 코드를 테스트하고 유지하기가 더 유연하고 쉽게 테스트하고 유지할 수 있습니다. 간단한 빌딩 블록을 사용하면 코드를 쉽게 이해하고 유지 관리 할 수 있습니다.
function createJelly() {
return {
type: 'jelly',
colour: 'red',
scoops: 3
};
}
로그인 후 복사
(다음은 원래 텍스트에 따라 다시 작성된 FAQ 부분이며 유사한 문제가 간소화되어 병합되었습니다)
faq (faq)
공장 기능과 생성자의 차이는? 공장 함수는
키워드없이 객체를 직접 반환합니다. 공장 기능은 기능적 프로그래밍 스타일에 더 유연하며 더 유연합니다.
공장 함수에서 개인 변수를 만드는 방법은 무엇입니까? <.> 클로저 사용. 개인 변수는 공장 기능 내부에서 선언되며 공장 기능에 의해 반환 된 객체의 메소드를 통해서만 액세스 할 수 있습니다.
공장 기능을 ES6 화살표 기능과 함께 사용할 수 있습니까? 위 내용은 빠른 팁 : JavaScript의 공장 기능은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!