Я пытаюсь внедрить службу, использующую AngularJS для управления cookie-файлами.
angular
.module('myModule')
.service('CookiesService', ['$cookies', function ($cookies) {
var cookies = {
cookie1: {},
cookie2: {}
};
function CookiesService() {
}
CookiesService.prototype.update= function(name, options) {
cookies[name] = options ? options : {};
};
CookiesService.prototype.isCookie = function(name) {
if(!cookies.hasOwnProperty(name)) {
throw 'Unknown cookie name';
}
return cookies.hasOwnProperty(name);
};
function getter(prototype, name, getter) {
Object.defineProperty(prototype, name, {
get:getter,
enumerable: true,
configurable: true,
});
}
Object.keys(cookies).forEach(function(name) {
getter(CookiesService.prototype, name, function() {
try {
CookiesService.prototype.isCookie(name);
return $cookies.get(name);
} catch (e) {
throw new Error('Invalid cookie'); // never thrown!
}
});
/*Setter code*/
return new CookiesService();
});
}
]);
Таким образом, в основном, если я хочу получить cookie-файл после его установки, я просто вызову CookiesServices.
Howeber, если я попытаюсь вызвать getter, чтобы получить cookie, который не существует, я ожидаю получить ошибку в консоли.Так как у меня есть бросок, но кажется, что он не работает, и я не могу отладить и посмотреть, выполняется ли код на этом уровне или нет.
Пример: CookiesService.cookie3 <- дает мне неопределенныйошибка не выдается. </p>
Также при условии, что я сделаю следующее:
CookiesService.prototype.isCookie = function(name) {
return cookies.hasOwnProperty(name);
};
Object.keys(cookies).forEach(function(name) {
getter(CookiesService.prototype, name, function() {
if (!CookiesService.prototype.isCookie(name)) {
throw new Error("blabla");
}
return $cookies.get(name);
});
не будет выдано сообщение об ошибке, если я попытаюсь вызвать CookiesService.cookie2