> 웹 프론트엔드 > JS 튜토리얼 > 내가 가장 좋아하는 JavaScript 디자인 패턴

내가 가장 좋아하는 JavaScript 디자인 패턴

Christopher Nolan
풀어 주다: 2025-03-09 00:30:12
원래의
601명이 탐색했습니다.

My Favorite JavaScript Design Pattern

내가 가장 좋아하는 JavaScript 디자인 패턴 나는 많은 것을 사용하는 JavaScript 디자인 패턴을 보는 것이 흥미로울 것이라고 생각했습니다. 나는 필요한 유연성을 제공하는 패턴에 도달 할 때까지 다양한 소스의 영향을 흡수하고 적응시키는 기간 동안 점차적으로 정착했습니다. 개요를 보여 드린 다음 어떻게 함께 오는지 보겠습니다.

해당 샘플 코드에서 볼 수 있듯이 전체 구조는

함수 리터럴

: 입니다.

리터럴은 본질적으로 자체 실행 범위이며, 이름이 지정된 함수를 정의한 다음 즉시 호출하는 것과 동일합니다.

나는 원래
function MyScript(){}
(function()
{

  var THIS = this;

  function defined(x)
  {
    return typeof x != 'undefined';
  }

  this.ready = false;

  this.init = function(
  {
    this.ready = true;
  };

  this.doSomething = function()
  {
  };   

  var options = {
      x : 123,
      y : 'abc'
      };

  this.define = function(key, value)
  {
    if(defined(options[key]))
    {
      options[key] = value;
    }
  };

}).apply(MyScript);
로그인 후 복사
로그인 후 복사
acapsulation

를 위해 함수 리터럴을 사용하기 시작했습니다. 모든 형식의 스크립트는 해당 인클로저로 래핑 할 수 있으며, 개인 스코프로 효과적으로 "밀봉"하여 동일한 스코프의 다른 스크립트와 충돌하지 않거나 전 세계 스코프의 데이터와 충돌하지 않습니다. 끝에있는 브래킷 페어는 다른 기능과 마찬가지로 범위를 실행하는 것입니다. 그러나 전역으로 호출하는 대신 범위가 함수를 사용하여 실행된다면, Apply에서는 외부에서 참조 할 수있는 특정 스코프에서 실행하도록 만들 수 있습니다. . 그래서 그 두 가지를 결합하여 명명 된 함수의 생성을 결합한 다음, 이름이 지정된 함수의 범위에 함수 문자를 실행함으로써 우리는 모든 스크립트의 기초를 형성 할 수있는 단일 사용 객체로 끝나고, 객체 지향적 클래스에서 발견되는 종류의 상속을 시뮬레이션합니다. 내부의 아름다움 첫 번째 코드 예제를 살펴보면 둘러싸는 스코프의 구조에 의해 어떤 유연성이 제공되는지 알 수 있습니다. 물론 어떤 기능에서도 할 수없는 것은 아니지만, 이런 식으로 마무리하면

라는 스코프와 관련 될 수있는 구성이 있습니다. 우리는 그러한 구성을 여러 개의 구조물을 만들고 동일한 범위를 모두 연관시킬 수 있습니다. 그러면 모두
(function()
{
  ...

})();
로그인 후 복사
로그인 후 복사
공개 데이터 를 공유합니다. 그러나 공개 데이터를 공유하는 것과 동시에, 각각은 자체 개인 데이터 function doSomething() { ... } doSomething();도 정의 할 수 있습니다. 예를 들어, 스크립트의 맨 위에서 :

우리는 기능 범위를 가리키는 개인 변수 를 만들었고, 개인 기능 내에서 그것을 언급하기 위해 개인 함수 내에서 사용될 수 있습니다. 동일한 방식으로 선언 된 다른 개인 변수는 상수 데이터를 정의하면 대문자 규칙을 공유 할 수 있습니다 (그러나 VAR 대신 const를 사용하는 선언은 잘지지되지 않기 때문에 피해야합니다). 개인 기능

는 내부 유틸리티를 제공하는 데 사용될 수 있습니다
function MyScript(){}
(function()
{

  var THIS = this;

  function defined(x)
  {
    return typeof x != 'undefined';
  }

  this.ready = false;

  this.init = function(
  {
    this.ready = true;
  };

  this.doSomething = function()
  {
  };   

  var options = {
      x : 123,
      y : 'abc'
      };

  this.define = function(key, value)
  {
    if(defined(options[key]))
    {
      options[key] = value;
    }
  };

}).apply(MyScript);
로그인 후 복사
로그인 후 복사
그러면

공개 방법과 속성을 만들 수 있으며 다른 인스턴스와 외부에 액세스 할 수 있습니다. 우리는 또한 특권 값을 생성 할 수 있으며,이 경우 공개 정의 방법을 통해 개인이지만 공개적으로 정의 가능합니다. 데이터의 요구에 따라 그 주장이 추가로 검증 될 수 있습니다.

마무리!
(function()
{
  ...

})();
로그인 후 복사
로그인 후 복사
이러한 모든 기능은 구성을 나에게 유용하게 만드는 이유입니다. 그리고 그것은 모두 깔끔하고 자체적으로

싱글 톤 에 싸여 있습니다. 그래서 당신은 어떻게 생각하십니까? 이것은 당신에게 친숙한 패턴입니까, 아니면 당신이 사용하고 싶은 다른 것이 있습니까?

썸네일 크레디트 : Superkimbo
function doSomething()
{
  ...
}

doSomething();
로그인 후 복사
참고 : 더 원하십니까? James로부터 더 많은 것을 읽으려면 Weekly Tech Geek 뉴스 레터,

Tech Times

.

위 내용은 내가 가장 좋아하는 JavaScript 디자인 패턴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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