Про куки
При работе с куками частенько мы используем популярный вариант какой либо библиотеки, все они работают примерно одинаково.
$.cookie('cookie_name', 'cookie_value'); //установка
$.cookie('cookie_name'); //чтение
$.cookie('cookie_name', null); //удаление
$.cookie('cookie_name', 'cookie_value', {
expires: 5,
path: '/admin',
}); //опции
или
cookie.set('cookie_name', optios);
cookie.get('cookie_name');
В исходниках на получение куки всегда есть что-то из разряда
var cookies = document.cookie.split('; ');
for (var i = 0; i < cookies.length; i++) {
// и разбор самой куки
}
Каждый вызов получения куки делает кучу работы, надеюсь в вашем проекте это не так.
Я бы хотел работать с куками как-то так, а при чтении куки брать ее из памяти.
// прочитать
if (cookie.id === '1') {
//удалить
delete cookie.id;
}
//установить новое значение
cookie.key = '12341234';
//поменяем опции
cookie.options = {
expires: new Date(Date.now() + 30*24*60*60*1000).toUTCString(),
path: '/'
};
//обновить значение
cookie.key = '43214321';
Proxy
В ES6 появилась возможность полного перехвата любого объекта, обращение к любому свойству объекта можно контролировать как мы это захотим, к сожалению, заполифилить для поддержки старичков возможности нет. Описание всех возможностей Proxy мы не рассмотрим, затронем только основное на мой взгляд, на примере реализации работы с куками.