A palavra reservada
this
é um objeto de contexto, e representa o contexto onde o código atual está sendo executado. Dependendo de onde ou como ele for usado, o seu valor pode mudar.
let user = {
name: 'John',
age: 31,
email: '[email protected]',
city: 'Sao Paulo',
blogPosts: ['Chicken Potpie', '4 mashed potato recipes'],
login: function () {
console.log('User logged in')
},
logout: function () {
console.log('User logged out')
},
logBlogPosts: function() {
//a forma de acessar as propriedades é através da palavra `this`
this.blogPosts.forEach(post => {
console.log(post)
})
}
}
user.logBlogPosts()
// Chicken Potpie
// 4 mashed potato recipes
Repare que é preciso usar function declarations para que o this
referencie o objeto no qual o método for criado.
O this
funciona de uma forma diferente dentro de uma arrow function
. O valor do this
referencia o objeto no ponto da invocação do método.
Mas para que a sintaxe do function declaration possa ser reduzida, existe essa alternativa, removendo a palavra function
e os dois pontos:
let user = {
login () {
console.log('User logged in')
}
}