자바 스크립트에서 싱글 톤을 만드는 두 가지 방법에 대한 독서 과제가 있습니다. 간단한 변수 리터럴 방식과 개인 변수를 사용하려는 클로저 기법이 있습니다.클래스 - "생성자 함수"를 싱글 톤으로 변환하는 Javascript 유틸리티 함수
내가 예를 들어, 유틸리티 함수를 만들 찾고 무엇이든 클래스
Singleton(classname);
- 싱글 톤 방법은 싱글로이 클래스를 변환 "생성자 함수는"내가 여기에 인수로 전달 객체, 더하기 new Classname()
을 호출 한 후 누군가 다시 새로운 classname()을 발생하면 new Error ("Already instantiated once, this is Singleton");
사용 사례는 다음과 같습니다 -
function Circle() {this.name = "Circle";}
SingleTon(Circle);
var circle1 = new Circle(); // returns the circle instance
var circle2 = new Circle(); // throws Error "Already instantiated once, this is Singleton"
여기서는 "싱글 톤"방법을 정의하려고합니다.
나는 getInstance 메소드는 같은 인스턴스를 가져 오는 데 사용됩니다 유사한 예를 보았다 -하지만 위의 특정 질문을 찾고 Singleton.getInstance (원) 등을 어디에서 인스턴스를 작성하는 습관 다른 프로그래머 "새로운"방법은 자신의 코드 어딘가에서 new Circle();
두 번째 시도를 시도하고 오류를받습니다.
이런 식으로 싱글 톤을 만드는 것은 하나의 문제이지만 주된 문제는 Circle 생성자가 Singleton 함수의 어딘가에서 수정되어야 할 필요가 있다는 것을 이해하는 "Error"를 던지고있는 것입니다.
해결책이 있습니까?
미리 감사드립니다.
Singleton('Circle');
데모 :
번개 빠른, 나는이 질문을 게시 한 후 첫 번째 코드는 초 내에 스 니펫을 한 다음 전화 및 2 분 주위를 데려 jsfiddle을 추가 계속 볼 수 있었다.이러한 신속 함의 정확성은 믿기지 않습니다. 그것은 다음과 같은 모든 요구 사항을 다룹니다. 이미 작성된 Circle 함수를 변경할 수 없습니다. Circle 함수는 Singleton 함수와 독립적이어야하며 Singleton 함수는 Circle 함수를 수정합니다. 이 솔루션은 사전 작성된 코드에 쉽게 적용 할 수 있습니다. 나는 다른 사람들이 이것에 대답하기를 기다리고 있었지만, 더 좋은 대답을 얻으려는 희망은 거의 없었다. –
몇 초 안에 진짜 천재 답변 :) 고마워요 –
@AnmolSaraf 문제 없어요^_^도와 드리겠습니다! – Neal