이번에는 js디자인 패턴-싱글 케이스 모드를 가져왔는데, js 싱글턴 모드 사용 시 주의사항은 무엇인지 살펴보겠습니다.
1. 개념: 전통적인 개발 엔지니어의 관점에서 단일 관심 모델은 각 클래스에 인스턴스가 하나만 있는지 확인하는 것입니다. 인스턴스가 존재하는지 여부를 먼저 확인합니다. 존재하지 않으면 다시 생성되므로 각 클래스에 대해 인스턴스 개체가 하나만 있습니다. JavaScript에서 싱글톤은
네임스페이스의 공급자 역할을 하며 전역적으로 개체에 액세스할 수 있는 고유한 액세스 지점을 제공합니다. 123 2. 기능 및 주의사항:
기능: 1. 모듈 간 통신
2. 시스템에는 특정 클래스의 객체가 하나만 있을 수 있습니다.
3. 자신의
속성 및 메소드를 보호하세요 참고: 1. 지불 이것에 주의하세요
2. 클로저는 쉽게 메모리 누수를 일으킬 수 있습니다
3. 상속을 사용할 때 new 사용에 주의하세요.
많은 수의 속성과 메서드를 포함할 수 있는 객체 리터럴을 사용하는 것입니다.
var firstObject = { property1: "something", property2: "something else", method1: function () { console.log('hello web!'); } };이 객체를 확장하려면 자체 전용 멤버를 제공한 다음 클로저를 통해 이러한 변수 및 함수 선언을 내부에 캡슐화할 수 있습니다. 비공개 또는 공개 메소드를 구현할 수 있습니다. 다음 코드를 다시 살펴보겠습니다.
var firstObject= function () { /* 这里声明私有变量和方法 */ var privateVariable = 'something private'; function showPrivate() { console.log(privateVariable); } /* 公有变量和方法(可以访问私有变量和方法) */ return { publicMethod: function () { showPrivate(); }, publicVar: 'the public can see this!' }; };var single = firstObject(); single.publicMethod(); // 输出 'something private'console.log(single.publicVar); // 输出 'the public can see this!'사용할 때만 초기화하고 싶다면 어떻게 해야 할까요? 리소스를 절약하기 위해 다음과 같이 다른
var firstjObiect= (function () { var instantiated; function init() { /*这里定义单例代码*/ return { publicMethod: function () { console.log('hello world'); }, publicProperty: 'test' }; } return { getInstance: function () { if (!instantiated) { instantiated = init(); } return instantiated; } }; })();/*调用公有的方法来获取实例:*/firstjObiect.getInstance().publicMethod();사용 시나리오를 살펴보겠습니다. 싱글톤은 일반적으로 시스템 간의 다양한 모드에서 통신 조정에 사용됩니다.
var firstObjectTester = (function () { //参数:传递给单例的一个参数集合 function Singleton(args) { //设置args变量为接收的参数或者为空(如果没有提供的话) var args = args || {}; //设置name参数 this.name = 'SingletonTester'; //设置pointX的值 this.pointX = args.pointX || 6; //从接收的参数里获取,或者设置为默认值 //设置pointY的值 this.pointY = args.pointY || 10; } //实例容器 var instance; var _static = { name: 'SingletonTester', //获取实例的方法 //返回Singleton的实例 getInstance: function (args) { if (instance === undefined) { instance = new Singleton(args); } return instance; } }; return _static; })();var singletonTest = firstObjectTester .getInstance({ pointX: 5 }); console.log(singletonTest.pointX); // 输出 5다음은 다음과 같습니다. 싱글톤 모드 구현 예에 대한 링크는 다음과 같습니다.
텍스트 영역 데이터 저장 중 Html을 Txt로 변환하고 표시 중 Txt를 Html로 변환하는 솔루션
Method 1,
function Universe() { // 判断是否存在实例 if (typeof Universe.instance === 'object') { return Universe.instance; } // 其它内容 this.start_time = 0; this.bang = "Big"; // 缓存 Universe.instance = this; // 隐式返回this}// 测试var uni = new Universe();var uni2 = new Universe(); console.log(uni === uni2); // trueMethod 2,
function Universe() { // 缓存的实例 var instance = this; // 其它内容 this.start_time = 0; this.bang = "Big"; // 重写构造函数 Universe = function () { return instance; }; }// 测试var uni = new Universe();var uni2 = new Universe(); uni.bang = "123"; console.log(uni === uni2); // trueconsole.log(uni2.bang); // 123이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 다른 관련 기사를 주목하세요. PHP 중국어 웹사이트에서! 추천 도서:
위 내용은 js 디자인 패턴 - 싱글턴 패턴의 활용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!