Angular js - 隐藏工厂的私有变量

Angular js - Hide private variables from factories

请参考 - http://jsfiddle.net/36qp9ekL/629/

我正在使用工厂方法,这样我就可以隐藏实现逻辑、私有 (pvt) 变量以及工厂的所有优点。

如果您 运行 代码并查看控制台,我可以查看 pvtvar1 和 pvtvar2。我如何真正隐藏 pvt 变量,实现细节。

app.controller("mycontroller", function($scope, myfactory) {

console.log(myfactory);

});

如果你能说出工厂相对于服务的优势,将会有所帮助。

如您所知,javascript 中没有士兵。您正在使用闭包来创建不可访问的变量和函数。这和你得到的一样好。控制台可能会向您显示(取决于浏览器)通过闭包定义的属性,但重要的是,这些属性无法在您的代码中访问。

服务相对于工厂的优势?您可以从 js 对象而不是函数创建可注入服务,这样您就可以创建继承功能的服务。不是非常有用,因为可注入模型在许多方面是继承的替代品,但它仍然是一个选项。

我专门编写服务而不是工厂,但我在我的项目中使用打字稿(它有私有 ;))

app.factory("myfactory", function() {

  var pvtvar1= 3;
  var pvtvar2 = 4;
    return {
        a:function(){
        return pvtvar2 + pvtvar1;}
    }


});

您在同一变量范围内声明了对象和函数。这就是显示它们的原因。在这里,我在对象的范围内声明了函数。看看这个了解更多详情 http://toddmotto.com/mastering-the-module-pattern/