Javascript - Aplicar uma flag "isDirty" a um objecto

Hoje estive a ver com um colega do trabalho (um tal de Morais!) uma forma de saber em Javascript se as propriedades de um objecto tinham sido alteradas ou não.

Já há por aí frameworks que nos facilitam a vida neste tipo de situações, mas mesmo assim vou deixar um exemplo muito básico de uma solução que nos lembrámos. 

function Professor(){
this.Nome;
this.DataNascimento;
this.isDirty=false;
this.dirtyList = new Array();
this.setValue = function(propriedade, valor) {
                if(this.propriedade != valor) {
                this.propriedade = valor;
                this.dirtyList.push(propriedade);
                this.isDirty=true;
                }
};
}
var novo = new Professor();
console.log(novo.isDirty);
novo.setValue("Nome", "Guilherme");
console.log(novo.isDirty);

Infelizmente ainda não dá para "confiar" no uso de getters e setters em Javascript por uma questão de compatibilidade de browsers (once again, thank you dear MS...), mas dá para dar a volta usando um método para alterar a propriedade e tendo uma flag que nos avise se algo foi alterado como estou a fazer no exemplo de cima. A array dirtyList é útil para saber que propriedades foram alteradas.

Published 21-9-2011 1:56 por Guilherme Cardoso
Filed under:

Comments

# re: Javascript - Aplicar uma flag "isDirty" a um objecto

Como nao da para confiar no uso de getters? qual a versão de js q estas a usar? na 5 podes mm definir so getter ou setters. pre-5 podes usar closures para "esconderes" os campos (se isso e assim tao importante...)

quarta-feira, 21 de Setembro de 2011 9:24 by Luis Abreu

# re: Javascript - Aplicar uma flag "isDirty" a um objecto

Boas Luís,

Neste projecto estamos a escrever para pre-5 e lá tive de recorrer a closures para isto.

quarta-feira, 21 de Setembro de 2011 11:40 by Guilherme Cardoso

Leave a Comment

(requerido) 
(requerido) 
 
(opcional)
(requerido) 
If you can't read this number refresh your screen
Enter the numbers above: