Pesquisar neste blog

14/07/2020

Call & Apply em JavaScript

function getPreco(imposto = 0moeda'R$') {
    return `${moeda} ${this.preco = (1 -this.desc) * (1 + imposto)}`
}

const produto = {
    nome: 'Ventilador',
    preco: 8090,
    desc: 0.15,
    getPreco
}
global.preco = 20
global.desc = 0.1
console.log(getPreco());
console.log(produto.getPreco());

// do call e apply
const carro = {preco: 7788desc: 0.20}
console.log('\n',carro);
console.log(getPreco());
console.log(getPreco.call(carro));

//appy
console.log('\n',getPreco.apply(carro));

console.log(getPreco.call(carro0.17"$"));
console.log(getPreco.apply(global, [0.17],'$'));//apply dentro de um array




Classe vs Funcão Factory em JavaScript

class Pessoa{
    constructor(nome){
        this.nome = nome//torna publico
    }

    falar(){
        console.log('1- Meu nome é: ',this.nome);
        console.log(`2- Meu nome é: ${this.nome}`);
    }
}
const p1 = new Pessoa('João')
p1.falar()
console.log(p1);//imprimindo o objeto



Função Factory em JavaScript

//Factory é uma função que retorna um objeto
function Pessoa() {
    return{
        nome: 'Karolayme meu AMOR',
        sobrenome: 'Silva'
    }
}

console.log(Pessoa());

function Produto(nomepreco) {
    return {
        nome,
        preco
        desconto: 0.1//caso não passe nenhum valor
    }
}

console.log(Produto('Notebook',2500));
console.log(Produto('iPad',1575.7));


Closures em JavaScript

//Closure é  o escopo criado quando uma função é declarada
//Esse escopo permite a função acessar e manipular variáveis

//Contexto léxico em ação!
const x = 'Global'

function fora() {
    const x = 'Local'
    function dentro() {
        return x;
    }
    return dentro
}

console.log(fora());

const minhaFuncao = fora()
console.log(minhaFuncao());//acessa o funcao da variavel local