>웹 프론트엔드 >JS 튜토리얼 >JavaScript 디자인 패턴 학습 Singleton_js 객체 지향

JavaScript 디자인 패턴 학습 Singleton_js 객체 지향

WBOY
WBOY원래의
2016-05-16 18:49:041194검색
코드 복사 코드는 다음과 같습니다.

/* 기본 싱글톤 */
var Singleton. = {
attribute1: true,
attribute2: 10,
method1: function() {
},
method2: function(arg) {
}
}; 🎜>single 소프트웨어 패턴의 주요 용도 중 하나는 네임스페이스입니다:
/* GiantCorp 네임스페이스. */
var GiantCorp = {};
GiantCorp.Common = {
// 모든 개체 및 모듈에서 사용되는 공통 메서드
GiantCorp.ErrorCodes = {
// 데이터를 저장하는 데 사용되는 개체 리터럴
GiantCorp.PageHandler = {
// 페이지별 메서드와 속성이 있는 싱글톤.
};
싱글톤 모드에서 프라이빗 메서드와 프라이빗 변수를 구현하려면 클로저를 사용하세요.
GiantCorp.DataParser = (function() {
// 비공개 속성
var whitespaceRegex = /s
// 비공개 메서드
function StripWhitespace(str) {
return str.replace(whitespaceRegex, '')
function stringSplit(str, delimiter) {
return str.split(delimiter);
}
// 객체 리터럴에 반환된 모든 것은 공개되지만, 위에서 생성된 클로저.
return {
// Public 메서드
stringToArray: function(str, delimiter, StripWS) {
if(stripWS) {
str = StripWhitespace(str)
}
var outputArray = stringSplit(str, delimiter);
return outputArray;
}
})(); // 함수를 호출하고 반환된 객체 리터럴을 할당합니다.
// GiantCorp.DataParser.
지연 인스턴스화 싱글톤 모드 구현:
MyNamespace.Singleton = (function() {
var UniqueInstance; // 단일 인스턴스를 보유하는 전용 속성
function constructor() { // 모든 일반 싱글톤 코드가 여기에 들어갑니다.
...
}
return {
getInstance: function() {
if(!uniqueInstance) { / / 인스턴스가 존재하지 않는 경우에만 인스턴스화합니다.
uniqueInstance = constructor();
return UniqueInstance;
})(); .Singleton.getInstance().publicMethod1()

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.