자바스크립트 싱글턴 패턴

php中世界最好的语言
풀어 주다: 2018-03-13 18:08:11
원래의
1748명이 탐색했습니다.

이번에는 자바스크립트의 싱글케이스 모드와 자바스크립트 싱글톤 모드의 주의사항에 대해 소개해 드릴게요.

싱글턴 패턴은 네임스페이스를 나누고 속성 및 메소드 배치를 함께 구성하는 데 사용되는 객체입니다. 인스턴스화할 수 있는 경우 한 번만 인스턴스화할 수 있습니다.

네임스페이스를 나누고 전역 변수를 줄입니다.

코드를 하나로 정리하여 읽고 유지하기 쉽습니다.

시뮬레이트된 데이터와 같이 모든 객체 리터럴이 싱글톤은 아닙니다.

기본 구조:

let Cat = {   name: 'Kitty',   age: 3,   run: ()=>{      console.log('run');
   }
}
로그인 후 복사

위의 객체 리터럴 구조는 다음과 같습니다. 싱글턴 패턴을 만드는 방법 중 하나이지만 싱글턴 패턴은 아닙니다. 싱글턴 패턴의 특징은 한 번만 인스턴스화된다는 것입니다. 싱글턴 패턴을 구현하려면 변수를 사용하여 클래스가 생성되었는지 여부를 나타낼 수 있습니다. 기본 구현:

class Singleton {    constructor(name){        this.name = name;        this.instance = null;    }    getName(){        return this.name;    }}let getInstance = (()=> {    let instance;    return (name)=> {        if(!instance) {            instance = new Singleton(name);        }        return instance;    }})()let cat1 = getInstance('Hello');let cat2 = getInstance('Kitty');console.log(cat1 === cat2); //trueconsole.log(cat1.getName()) //'Hello'console.log(cat2.getName()) //'Hello'
로그인 후 복사

인스턴스 변수를 사용하여 인스턴스를 표시합니다. 인스턴스가 없으면 인스턴스를 직접 반환합니다. 한 번만 인스턴스화할 수 있으므로 cat2에서 얻은 인스턴스는 다음과 같습니다. cat1과 동일합니다.

Practical
DOM 요소를 생성할 때 반복 생성을 피하기 위해 싱글톤 모드를 사용하여

//单例模式let createModal = function() {    let content = document.createElement('div');
    content.innerHTML = '弹窗内容';
    content.style.display = 'none';    document.body.appendChild(content);
}//代理获取实例let getInstance = function(fn) {    let result    return function() {        return result || (result = fn.call(this,arguments));
    }
}let createSingleModal = getInstance(createModal);document.getElementById("id").onclick = function(){    let modal = createSingleModal();
    modal.style.display = 'block';
};
로그인 후 복사

를 생성할 수 있습니다. 더 흥미로운 정보를 보려면 이 기사의 사례를 읽은 후 방법을 익혔을 것입니다. PHP 중국어 웹사이트의 다른 관련 기사도 주목해주세요!

추천 도서:

Javascript의 관찰자 패턴


Javascript의 전략 패턴

위 내용은 자바스크립트 싱글턴 패턴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿