Javascript AngularJS工厂中强制参数的含义是什么

Javascript AngularJS工厂中强制参数的含义是什么,javascript,angularjs,angular-services,Javascript,Angularjs,Angular Services,我正在详细介绍angular如何通过使用module.factory()方法创建工厂 我发现内部angular使用以下方法,即内部仅使用提供者 function factory(name, factoryFn, enforce) 因此,我的问题是关于此函数的第三个参数<;代码>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

我正在详细介绍angular如何通过使用module.factory()方法创建工厂

我发现内部angular使用以下方法,即内部仅使用提供者

function factory(name, factoryFn, enforce) 

因此,我的问题是关于此函数的第三个参数<;代码>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>

function factory(name, factoryFn, enforce) {
  return provider(name, {
    $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
  });
}
创建服务时,通常不发送返回值,并且在幕后调用
Object.create()
来创建包含
sayHello
方法的对象

app.service('MyService', function () {
  this.sayHello = function () {
    console.log('hello');
  };
});
但是,在创建工厂时,将返回一个对象文字:

app.factory('MyService', function () {
  return {
    sayHello: function () {
      console.log('hello');
    };
  }
});
基本上,enforce用于强制执行返回值。这不仅仅是“这是服务还是工厂?”的问题,因为如果您想:

app.service('MyService', function () {
  return {
    sayHello: function () {
      console.log('hello');
    };
  }
});
关于“你应该使用哪种?”的问题,请查看以下内容: