为什么 AngularJS 服务只能 return 对象,而工厂可以 return 原语和对象?

Why AngularJS service can return only objects, when factory can return both primitives and objects?

工厂可以return 原语和对象。那么对 return 对象使用服务(类型友好注入)的原因是什么?

// factory
app.factory('factoryService',function(){
  var returnObj = function() {
  };

  return new returnObj(); 
})

// service
app.service('service',function(){
  return this;
});

原因是商品。如果你有一个构造函数,你可以将它传递给 service() 而不是必须创建一个调用构造函数的工厂和 returns 创建的对象。

顺便说一句,factory() 是另一种商品,它避免创建具有返回服务的 $get() 函数的提供者。它只是让代码更短。