2013-11-02 2 views
0

아마 여기에 필요한 각도 또는 자바 스크립트에 대한 특정 내용을 놓친 것일 수 있습니다. 그러나 CarWashService가 아래에 두 번 정의 된 기술적 인 이유가 있다면 설명 할 수 있습니까?IIFE 및 명명 규칙

(function() { 

angular.module("cw.services") 
    .factory("CarWashService", ['$sce', '$rootScope', function ($sce, $rootScope) { 

     var CarWashService; 

     return new (CarWashService = (function() { 
      function CarWashService() { 
       this.results = []; 
       this.resultsCountText = ""; 
       this.PageIndex = 0; 
       this.processing = false; 
       this.initialized = false; 
       this.showNoResults = false; 
       this.showResults = false; 
       this.noCarWashMessage = $sce.trustAsHtml($rootScope.resources.landingNoCarWashMessage); 
      } 

      return CarWashService; 

     })()); 

    }]); 

}).call(this); 

CarWashService가 할당되고 같은 줄에 return new를 호출 날을 던질 수 있는지. javascript 전문가에게는 IIFE에서 CarWashService 이외의 다른 이름을 사용하는 것이 합리적일까요? 아니면 IIFE를 할 때 이것이 받아 들여지는 패턴입니까?

+2

이것은 너무 복잡해 보이지만 그 이상은 아닙니다. – deceze

답변

1

불필요하게 복잡하게 만든 사람은 CarWashService을 선언 한 것만 큼 아무런 혜택도 얻지 못합니다. 작성한 추가 폐쇄를 사용하지 않기 때문입니다. 그들이 개인 국가를위한 폐쇄를 필요로하더라도, 그들은 외부 기능으로부터 하나를 가진다.

부수적으로이 또한 각도가 잘못되었습니다. 팩토리를 정말로 원한다면 아마도 인스턴스가 아닌 생성자를 반환해야합니다. 이것은 서비스로 선언되어야하는 것처럼 보입니다.