Javascript AngularJS服务写作风格
以下是我在AngularJS中定义服务时使用的代码类型(示意图):Javascript AngularJS服务写作风格,javascript,angularjs,Javascript,Angularjs,以下是我在AngularJS中定义服务时使用的代码类型(示意图): .factory('MyService', function() { var prv = { // Private stuff I don't want to expose }; var pub = { // Public stuff - Will read & write prv above }; return pub; }) 正如
.factory('MyService', function() {
var prv = {
// Private stuff I don't want to expose
};
var pub = {
// Public stuff - Will read & write prv above
};
return pub;
})
正如您可能猜到的,目标是隔离服务需要使用的私有变量和函数,并且只返回公共部分(在我到目前为止看到的每个AngularJS示例中,工厂函数都返回一个对象,该对象既包含一些数据,也包含处理该数据的函数,这是不对的)
这工作得很好,到目前为止我从未遇到过任何问题,但我想知道:既然prv对象位于匿名函数内部,并且没有在该函数外部使用,那么它安全吗?或者它是否有被解释器中的垃圾收集或其他幕后过程破坏的风险
谢谢。不,没有垃圾收集的风险,因为服务/工厂是一个单体,一旦创建,将在应用程序的生命周期内有效。此外,prv对象也没有真正的需要,因为在服务中创建的任何不属于返回对象的内容(在您的示例中为
pub
)本质上是私有的,因为它不是通过返回对象公开的
我的服务/工厂的结构通常如下:
.factory('MyService', function() {
function doStuff(){doPrivateStuff();}
function doPrivateStuff(){}
return {
doServiceStuff: doStuff
};
});
谢谢你提供了非常有用的信息。