我正在学习如何在AngularJS服务中存储API调用响应数据。在我看到的所有示例中,人们使用服务中的函数来获取或设置值。
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
}])
我想知道我的做法是否可能导致任何问题。这是否被认为是一种糟糕的做法,如果是,为什么?
发布于 2019-07-11 12:51:52
与直接公开属性相比,对数据访问器(getter和setter)的偏好既不特定于AngularJS,也不特定于JavaScript。通常是面向对象编程中的一种常见做法。
与直接访问属性相比,更喜欢getter和setter的主要原因之一是数据封装。当数据被定义为服务函数(let info;
)的词法环境中的局部变量时,不可能从外部(例如从控制器)访问它。
数据访问器还为您提供了添加数据访问逻辑的灵活性。例如,您可能希望在调用getter时实现一些检查,并作出是否返回数据的决定。同样,在setter中,您可以验证数据(使用setter调用)是否满足要求,如果没有,则抛出一个错误。
此外,您可能希望检查this answer,以查看getter和setter可能提供的许多其他好处。
https://stackoverflow.com/questions/56994346
复制