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.