2
respostas

Mais de uma função no props

Boa tarde professor, eu fiquei só com uma dúvida, digamos que num modelo eu tenho por exemplo uns 7 métodos, não teria uma forma mais fácil de passar todos esses métodos sem eu escrever todos eles na instanciação da classe Bind? Porque lá passamos todos os métodos que vamos usar para fazer uma modificação da view.

2 respostas

Bom dia Pedro, não foi referenciado precisamente em qual exercício surgiu essa duvida. Se você pudesse passar o exercício ou um exemplo de código que ilustra a utilização, ajudaria a entendermos o problemas. Porém, de uma forma geral você já verificou se a solução da Arrow function (que possuí this léxico) ou a incorporação do contexto por meio do construtor do modelo não atendem ao que você pretende fazer?

Nesse trecho de código é onde eu crio meu proxy.

static create(objeto, props, acao) {
        return new Proxy(objeto, {
            get(target, prop, receiver) {
                if(props.includes(prop) && ProxyFactory._isFunction(target[prop])) {
                    return function() {
                        console.log(`a propriedade "${prop}" foi interceptada`);
                        Reflect.apply(target[prop], target, arguments);
                        return acao(target);
                    }
                }

                return Reflect.get(target, prop, receiver);
            },

            set(target, prop, value, receiver) {
                //Verifico se essa propriedade contem nas propriedades passadas na criação do proxy
                if(props.includes(prop)) {
                    //Aqui preciso alterar o valor da propriedade mensagem
                    target[prop] = value;
                    acao(target);
                }

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

Eu digo quando eu instancio a minha classe Bind eu preciso passar as minhas props que são as minhas funções, por exemplo.

this._mensagem = new Bind(new Mensagem(), new MensagemView($('#mensagemView')), 'texto');

Texto nesse caso e uma função minha, eu digo, passar inumeras funções do meu modelo como parâmetro, se não tem uma forma melhor de eu passa-las.