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/
请参考 - 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/