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

时间:2015-09-21 14:43:29

标签: angularjs factory encapsulation

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

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

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

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

console.log(myfactory);

});

如果你能说出工厂对服务的好处,那将会很有帮助。

2 个答案:

答案 0 :(得分:2)

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

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


});

您在变量的相同范围内声明对象和函数。这就是他们被展示的原因。在这里,我声明了对象范围的函数。请查看此内容以获取更多详细信息http://toddmotto.com/mastering-the-module-pattern/

答案 1 :(得分:0)

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

服务对工厂的优势?您可以从js对象而不是函数创建可注入服务,以便创建继承功能的服务。由于注射模型在许多方面可以替代继承,但它仍然是一种选择,因此不是非常有用。

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