Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

ProxyFactory sempre considera mensagem como 'true'

Criando a classe ProxyFactory, descobri que há algum tipo de bug, onde a classe normal é executada normalmente, mas a classe produzida com ProxyFactory sempre considera a propriedade _texto_ como sendo igual a true (um booleano), mesmo que seja passada uma string para ele. O que pode estar causando esse problema?

Classe Mensagem:

class Mensagem{
  constructor(texto=''){
    this._texto = texto;
  }

  get texto(){
    return this._texto;
  }

  set texto(texto){
    this._texto = texto;
    return this;
  }
}

Classe ProxyFactory:

class ProxyFactory{

  static create(objeto, props, acao){
    return new Proxy(new ListaNegociacoes(), {

              get(target, prop, receiver){

                if(props.includes(prop) && (typeof(target[prop]) == typeof(Function))){

                  return function(){
                    Reflect.apply(target[prop], target, arguments);
                    return acao(target);
                  };
                }

                return Reflect.set(target, prop, receiver);

              },

              set(target, value, prop, receiver){

                Reflect.set(target, value, prop, receiver);
                acao(target);
              }
            });
  }
}

Forma que a classe está sendo instanciada no Controller:

this._mensagemView     = new MensagemView($("#mensagemView"));
    this._mensagem         = ProxyFactory.create(
                               new Mensagem(),
                               ['texto'],
                               (model) => this._mensagemView.update(model)
                             );

Desde já agradeço.

3 respostas

Fala aí Arthur, tudo bem? Acho que ficaria mais fácil você compartilhar o projeto, assim conseguimos simular o problema de uma maneira mais fácil.

Pode subir ele no Github ou Google Drive (zipado).

Fico no aguardo.

solução!

Resolvi o problema: estava usando Reflect.set onde deveria usar Reflect.get. Um pequeno descuido.

De toda a forma, é possível verificar a solução no meu GitHub

Boa Arthur, fico feliz que tenha conseguido resolver o problema.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.