Я делаю глобальное хранилище данных для своего приложения (приложение Angular JS, но это вопрос о JS, а не об Angular).
Я настроил service
, который устанавливает данные, получает данные и т. д.
Это выглядит так:
angular.module('core').factory('dataService', function(callsService) {
let properties = {
globalData: {}
};
properties.insertData = function(data) {
for (let x in data) {
this.globalData[x] = data[x];
}
return;
}
properties.getData = function(data) {
return this.globalData[data];
}
return properties;
});
Использование сервиса будет выглядеть так:
dataService.insertData({foo: 'bar'});
dataService.getData('foo'); // 'bar'
Однако это становится проблемой, когда есть вложенные данные, например:
dataService.insertData({foo: {bar: 'hello world'}});
dataService.getData('foo'); // {bar: 'hello world'}
Очевидно, именно так будут работать ссылки на объекты, но как я могу передать что-то вроде:
dataService.getData('foo.bar'); // 'hello world'
or
dataService.getData('[foo][bar]'); // 'hello world'
Возвращаясь к моему методу properties.getData
, есть ли способ рекурсивно (или каким-либо другим образом) получить доступ к вложенным объектам?
properties.getData = function(data) {
return this.globalData[data]; // needs to be able to get nested objects
}