У меня есть следующие службы angularJSJavascript частные функции и Object.prototype продлить
define(["angular"], function(Angular) {
var dataStorageService = function() {
var serviceConstructor = function() {
var _getColor = function(color) {
return this.config.categoryColorMapping.colors[color];
}
}
var serviceInstance = new serviceConstructor();
angular.extend(serviceInstance.prototype, {
config: {
numberOfMessagesDisplayed: 5,
maxTitleLength: 48,
maxPreambleLength: 140,
categoryColorMapping: {
colors : {
nyheter: '#2B2B2B',
sport: '#F59331',
underholding: '#F9B00D'
},
categories: {
nyheter: _getColor('nyheter'),
sport: _getColor('sport'),
underholding: _getColor('underholding')
}
}
},
get: function(param) {
if(this.config.hasOwnProperty(param)) {
return this.config[param];
} else {
console.warn('Playlist::configService:no "' + param + '" config found');
return false;
}
},
set: function(param, value) {
this.config[param] = value;
}
});
return serviceInstance;
};
return dataStorageService;
});
теперь моя цель состоит в том, чтобы сделать общественные следующие методы:
- получить
- набор
и я хочу использовать метод _getColor, но я хочу использовать его в конфигурации объекта JSON. Когда я запускаю код у меня есть
«ReferenceError: _getColor не определен»
является его possibie к achievie это так? (чтобы иметь _getColor private и использовать его в объекте JSON в angular.extend?)
Частные методы могут быть добавлены, когда вы установите прототип для возвращаемого значения на IIFE. Метод не является специфичным для экземпляра, поэтому это возможно. Отдельные члены экземпляра должны быть определены в функции конструктора, а также все привилегированные методы, которым необходимо получить к ним доступ. Существуют другие шаблоны для имитации таких защищенных объектов, как этот: http://stackoverflow.com/a/21800194/1641941 – HMR