2013-11-02 132 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绝对没有好处,因为他们没有使用他们创建的额外闭包。即使他们确实需要私人国家的关闭,他们也有来自外部职能的关闭。

作为一个方面说明,这也看起来不正确的角度。如果你真的想要一个工厂,这可能应该是返回构造函数而不是它的一个实例。这看起来应该被宣布为服务。