Não entendi muito bem o bind(). Ele só executa a função do objeto fora dele?
Não entendi muito bem o bind(). Ele só executa a função do objeto fora dele?
A função bind() cria uma nova função vinculada (bound function). Uma função vinculada é um objeto de função exótico (termo da ECMAScript 2015) que encapsula o objeto de função original. Chamar uma função vinculada geralmente resulta na execução de sua função encapsulada.
Fala, Daniel!
let pessoa = {
nome : "Ricardo",
idade : 37,
info : function(){
return `Nome: ${this.nome}, idade:${this.idade}`
}
let infoCarro = function (marca , modelo){
console.log(`O carro é da marca: ${marca} , modelo:${modelo}`);
}
console.log(infoCarro("fiat", "500"));
let pessoa = {
nome : "Ricardo",
idade : 37,
info : function(){
return `Nome: ${this.nome}, idade:${this.idade}`
}
// técnica de wrapper
let infoPessoa = pessoa.info;
// Se for invocada as variáveis irão conter o valor de undefined, pois quando for invocada estará fora no contexto do objeto
console.log( infoPessoa( ) );
// Nome: undefined, idade: undefined
*OBS : Lembre que aqui estamos atribuindo a função sem invocá-las. E para invocar uma função precisamos colocar os parênteses no final *
let pessoa = {
nome : "Ricardo",
idade : 37,
info : function(){
return `Nome: ${this.nome}, idade:${this.idade}`
}
}
let infoPessoa = pessoa.info.bind(pessoa);
console.log( infoPessoa() );
Espero ter te ajudado!
Entendi, muito obrigado Carlos e Ricardo pela ajuda! Depois dessas explicações eu testei mais um pouco e fez mais sentido.