Como observar alterações de valor nas variáveis JS

Estou querendo saber se alguém pode ser capaz de me ajudar com algo que eu acho bastante simples:

Basicamente, quero estender os protótipos de todos os tipos de dados (incluindo tipos intrínsecos), para permitir algum tipo de funções personalizadas, considere:

var x = "some string";
var y = 101;

x = "some other value";
y++;

x.onChange();
y.onChange();

Esta é a idéia básica que eu estou procurando, mas realmente o que eu quero é que o onChange (neste exemplo) seja diferente, portanto, uma nova função para a variável real (em vez de uma extensão de protótipo padrão), ou seja:

x.onChange = function() {
    alert("x.onChange");
}

y.onChange = function() {
    alert("y.onChange");
}

Isso não parece funcionar, mas devo estar faltando algo bastante simples, não? Quero dizer, certamente eu posso estender todos os objetos e tipos e adicionar novas funções ... não?

Qualquer ajuda seria muito apreciada!

questionAnswers(3)

yourAnswerToTheQuestion