在angularjs服务中获取或设置数据时使用函数的意义是什么?
我正在学习如何在AngularJS服务中存储API调用响应数据。在我看到的所有示例中,人们使用服务中的函数来获取或设置值在angularjs服务中获取或设置数据时使用函数的意义是什么?,angularjs,angularjs-service,Angularjs,Angularjs Service,我正在学习如何在AngularJS服务中存储API调用响应数据。在我看到的所有示例中,人们使用服务中的函数来获取或设置值 app.factory('dataFactory', function() { let dataFactory = {}; let info; dataFactory.setInfo = function(value){ info = value; } dataFactory.getInfo = function()
app.factory('dataFactory', function() {
let dataFactory = {};
let info;
dataFactory.setInfo = function(value){
info = value;
}
dataFactory.getInfo = function(){
return info;
}
return dataFactory;
});
但我意识到,我可以在服务中获取和设置变量值,而无需使用任何函数
app.factory('dataFactory', function() {
let dataFactory = {};
let dataFactory.info;
});
// Now I can get or set the value of this in my controller
app.controller('myCtrl', [dataFactory, function(dataFactory) {
dataFactory.info = "Value"; // setting the value
let test = dataFactory.info; // getting the value
}])
我想知道我的方法是否可能导致任何问题。这被认为是一种不好的做法吗?如果是,原因是什么?首选数据访问器(getter和setter)而不是直接公开属性既不是AngularJS特有的,也不是JavaScript特有的。这通常是面向对象编程中的一种常见做法 与直接访问属性相比,更喜欢getter和setter的主要原因之一是数据封装。当数据在服务函数的词法环境(
let info;
)中定义为局部变量时,无法从外部(例如从控制器)访问它
数据访问器还为您提供了添加数据访问逻辑的灵活性。例如,您可能希望在调用getter时实现一些检查,并决定是否返回数据。同样,在setter中,您可以验证数据(调用setter时使用的数据)是否符合要求,如果不符合要求,则抛出错误
此外,您可能还想查看“获取者”和“设定者”可能提供的许多其他好处。选择是一个意见问题。我更喜欢getter/setter,因为它们更容易通过日志、保护、断点、堆栈跟踪等进行调试