2013-11-02 129 views
0

也許我錯過了某些特定的角度或JavaScript需要這個,但有人可以解釋是否有技術原因CarWashService定義兩次以下?IIFEs和命名約定

(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); 

什麼可以扔我離開時在同一行調用return new如被分配CarWashService。對於那些JavaScript大師來說,在IIFE中使用除CarWashService以外的其他名稱是否合理?或者在做IIFE時這是一種可接受的模式?

+2

這看起來太複雜了,沒有更多。 – deceze

回答

1

無論是誰寫的只是使其不必要的複雜,只是聲明CarWashService絕對沒有好處,因爲他們沒有使用他們創建的額外閉包。即使他們確實需要私人國家的關閉,他們也有來自外部職能的關閉。

作爲一個方面說明,這也看起來不正確的角度。如果你真的想要一個工廠,這可能應該是返回構造函數而不是它的一個實例。這看起來應該被宣佈爲服務。