Геттеры и сеттеры.
Только если ваша переменная является свойством объекта, тогда вы можете задать свою set-функцию, которая не требует от остальной части скрипта какой-то модификации.
На глобальной переменной my_var делается это так:
Object.defineProperty(window /*- объект, где располагается свойство */, "my_var" /* - свойство, которое нужно опекать */,
{
get: function() // сторожим чтение значения
{
alert('Кто-то прочилал my_var!');
},
set: function(newValue) // сторожим запись значения
{
alert('Кто-то записал my_var! Новое значение: ' + newValue);
}
});
my_var = 123456; // пробуем записать что-то
you_var = my_var; // пробуем извлечь значение