也许我错过了一些特定于角度或javascript的东西需要这个,但有人可以解释一下是否存在技术原因CarWashService定义了两次?
(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时这是一种可接受的模式吗?
答案 0 :(得分:1)
无论是谁写的都是不必要的复杂,只要声明CarWashService
就没有任何好处,因为他们没有利用他们创造的附加封闭。即使他们确实需要私人州的封闭,他们也有外部功能的封闭。
作为旁注,这对于角度也看起来不正确。如果你真的想要一个工厂,这可能应该是返回构造函数而不是它的实例。这看起来应该被声明为服务。