Skip to content

Instantly share code, notes, and snippets.

@rafaelassumpcao
Created April 5, 2017 01:38
Show Gist options
  • Save rafaelassumpcao/859c1e9ff4f4044f2ee452cd3e24e642 to your computer and use it in GitHub Desktop.
Save rafaelassumpcao/859c1e9ff4f4044f2ee452cd3e24e642 to your computer and use it in GitHub Desktop.
this exemplos
//ES5
ES5.greet()
//{ name: "Ronaiza", greet: ES5.greet() }
// Window
//resolvendo o problema do this no ES5
var ES5 = {
name: 'Ronaiza',
greet: function(){
var self = this; //guarda a referencia
console.log(this); //this = ES5
//lembre-se da regra funções regulares sempre tem o this associado ao obj global (window)
setTimeout(function(){//função regular
console.log(self);//this = ES5
console.log(this); //window
})
}
}
ES5.greet()
// { name: "Ronaiza", greet: ES5.greet() }
// { name: "Ronaiza", greet: ES5.greet() }
// Window
const ES6 = {
name:'Ronaiza',
greet: () => console.log(this)//compartilha do escopo portanto foi definido no global Window
}
ES6.greet()
//Window
//o problema aqui é resolvido envolvendo o arrow em um escopo com o this que aponta pro obj
const ES6 = {
name:'Ronaiza',
greet: function(){
const arrow = () => console.log(this);//escopo lexico this compartilhado portanto refenciando o obj
arrow();
}
}
ES6.greet()
//{ name: "Ronaiza", greet: ES6.greet() }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment