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

Factory Function

Boa noite. Estava estudando sobre Factory Function e queria saber o motivo da variável img não estar sendo alterada.

const imgs  = () => {
    let img = [];
    return {
        addImg: (photo) => img = [...img, photo],
        img
    };
};
const images = imgs();
images.addImg('akskaskssk');
images.addImg('aloaloalo');
console.log(images.img);

É possível a variável ser modificada a cada chamada do método addImg?

Desde já, agradeço pela atenção!

2 respostas
solução!

Olá mbthales, tudo bem com você?

A sua função está alterando a variável, a questão é que estamos devolvendo apenas o estado inicial da variável img ( ao invés do estado atual), na verdade quando trabalhamos com o padrão factory normalmente temos uma função getter responsável por devolver o valor, poderíamos deixar seu código da seguinte maneira:

const imgs  = () => {
    let img = [];
    return {
        addImg: (photo) => {
            img = [...img, photo];
        },
        get img(){
            return [...img]
        },
        print(){
            console.log(img);
        }
    };
};

Dessa maneira ao fazer as inserções:

const images = imgs();
images.addImg('Imagem 1');
images.addImg("Imagem 2"

console.log(images.img);
>> [ 'Imagem 1', 'Imagem 2' ]

Conseguiu compreender?

Abraços e Bons Estudos!

Muito obrigado pela ajuda!