Unveiling the variable "this" on JavaScript | Mayk Brito

  Рет қаралды 55,849

Rocketseat

Rocketseat

Күн бұрын

Hey Dev! Everything okay?
Is 'this', on the several contexts of JavaScript keeping you awake at night? Are you using this concept in an efficient way in your code?
If you need to know how the context and the scope, strict mode, local and global 'this', how 'this' works in a method, inside a function and even inside a function that is inside another function; beyond knowing how it works in a class...
This class, then, will help you understand a little bit about how to use these guys.
We'll also see how the methods: .apply(), .call(), and .bind() can help you manipulate 'this' in several scopes and contexts.
Beyond that, how the arrow function works in these scenarios.
I hope this makes sense to you!! 💜
Repository: github.com/Roc... (in Portuguese)
-----
Follow Rocketseat on our social media:
Website: www.rocketseat...
Twitter: / rocketseat
Facebook: / rocketseat
Instagram: / rocketseat_oficial
Comunity: comunidade.rock...
Blog: rocketseat.com...

Пікірлер: 108
@ygorluiz
@ygorluiz 5 жыл бұрын
Em tempos de desemprego poucas pessoas disponibilizam conteúdo de qualidade e totalmente de graça, te desejo todo sucesso desse mundo e obrigado !
@espiritfox
@espiritfox 2 жыл бұрын
cara!! seu vídeo já tem 3 anos e foi a melhor explicação que vi até agora!!! parabens
@LucasRocha-lp2zi
@LucasRocha-lp2zi 2 жыл бұрын
Ja havia procurado em vários lugares e vários blogs uma definição e uma explicação, aqui foi muito maneiro, entendi perfeitamente!!!!! MUITO OBRIGADO!
@mauroanselmooliveira
@mauroanselmooliveira 4 жыл бұрын
A clareza e objetividade do video são impressionantes! Parabéns! Melhor video em PT-BR sobre o assunto !
@joaodasfabulas
@joaodasfabulas 5 жыл бұрын
Esse canal está cada vez melhor, parabéns aos organizadores!
@matheusvoalide2649
@matheusvoalide2649 5 жыл бұрын
nem assisti o video ainda, mas ja sei q é de otima qualidade.
@gelson_ferreira
@gelson_ferreira 4 жыл бұрын
Venho estudando javascript a fundo e você esta dar um grande ajuda. obrigado
@felipedantas8153
@felipedantas8153 4 жыл бұрын
Esse Mayke brito manda bem demais, os vídeos dele são incríveis! parabéns mais um conteúdo top!
@arroz_julio2270
@arroz_julio2270 3 жыл бұрын
Minha mente expandiu muito em relação ao This depois desse vídeo, obrigado!!
@ruanvalente7496
@ruanvalente7496 5 жыл бұрын
Incrível Mayk, sua didática é excelente passando o conteúdo de forma clara e objetiva. Parabéns para toda a equipe pelo excelente conteúdo ! Sucesso galera !!
@maykbrito
@maykbrito 5 жыл бұрын
Grande Ruan!! Obrigado pelo comentário manin! Tamo junto!! Bora pra cima!!
@SektorLK979
@SektorLK979 5 жыл бұрын
Fala Mayk, blz? Ótimo vídeo! Só uma coisa: O contexto (this) representa um objeto em questão e não a função. A função tem um contexto se ela estiver dentro de um objeto ou se você passar um contexto pra ela como no call, bind e apply, do contrário this é undefined. O this é atribuído ao objeto na Creation Phase do contexto de execução. Você consegue acessar o this em uma função em um contexto global, seja browser ou ambiente node, pq existe também um objeto global tanto para o browser (window) quanto para o node. (Global Object). Mas o contexto refere-se ao objeto e não a função
@maykbrito
@maykbrito 5 жыл бұрын
Maninho. Obrigado pelo comentário brother. Excelente. 💜💜💜
@tdias25
@tdias25 5 жыл бұрын
o this não funciona parecido com um escopo dinâmico? só que só leva em consideração como foi chamada (call site)? falo isso em referência ao seu comentário sobre "creation phase"
@SektorLK979
@SektorLK979 5 жыл бұрын
@@tdias25 Talvez não tenha entendido o que você quis dizer mas acho que você confundiu contexto de objeto com escopo léxico e closures. Escopo e contexto são coisas diferentes. Contexto (this) é um valor que faz referência à um objeto, e escopo é o limite onde expressões e valores são visíveis. Existe uma grande confusão entre essas duas coisas porque no JS existem 2 "tipos" de contexto, o contexto de execução e o contexto de objeto, ambos são chamados de contexto mas são coisas diferentes.
@tdias25
@tdias25 5 жыл бұрын
@@SektorLK979 sim, eu disse contexto de execução, que seria algo "" parecido "" como funciona uma linguagem que tem escopo dinâmico
@toonydias
@toonydias 5 жыл бұрын
Jonatas, o que você falou se aplica neste código abaixo? Pois se eu trocar o this pelo nome da variável o código não roda. Document .btn { width: 100%; height: 75px; } .quadrados { margin: 0; } Adicionar Quadrado var btn = document.querySelector('.btn') var div = document.querySelector('.quadrados') btn.addEventListener('click',add) function add(){ var create = document.createElement('button') div.appendChild(create) create.setAttribute('class','red') create.innerText = "Quadrado" //create.style.width = '100px' //create.style.height = '100px' //create.style.backgroundColor = 'red' //create.style.margin = '5px' //create.style.float = 'left' //create.style = 'width:100px;height:100px;background:red;margin:5px;float:left' create.setAttribute('style','width:100px;height:100px;background:red;margin:5px;float:left') create.addEventListener('mouseover',color) } function color() { var newBtn = document.querySelectorAll('.red') this.style.backgroundColor = getRandomColor() } function getRandomColor() { var letters = "0123456789ABCDEF"; var color = "#"; for (var i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; } var newColor = getRandomColor();
@gusprado
@gusprado 5 жыл бұрын
Excelentes exemplos. Parabéns Mayk!!
@maykbrito
@maykbrito 5 жыл бұрын
valeu mano!!
@andrelima8462
@andrelima8462 3 жыл бұрын
Muito bom estava com duvida no this. Vlw Maykão.
@leonardoraupp7830
@leonardoraupp7830 3 жыл бұрын
Primeira vez que consegui entender o This, muito obrigado!
@netasilva_
@netasilva_ 5 жыл бұрын
Mayk ótima explicação, eu peguei esse conteúdo com o Daciuk e agora revi com você. Acho que você é bem didático também e deveria investir nisso kk
@LucasLima-hj5sg
@LucasLima-hj5sg 3 жыл бұрын
Ótimo vídeo Maykão. O this no JS pode ser muito duro às vezes, mas esse vídeo faz um ótimo trabalho explicando os vários casos de uso
@bl1tz_x
@bl1tz_x 3 жыл бұрын
Maykão é incrível desde sempre
@BrenoNovelli
@BrenoNovelli 5 жыл бұрын
Show. Ainda me ajudou a entender método e class um pouco mais. Demorei um pouco pra entender o lance do call. Mas depois foi bem.
@andreytsuzuki5503
@andreytsuzuki5503 5 жыл бұрын
Que conteúdo maravilhoso!!! Vou compartilhar com um monte de gente.
@JefSueth
@JefSueth 4 жыл бұрын
caraca, esse vídeo tem o conceito de encapsulamento de POO em javascript!
@rocketseat
@rocketseat 4 жыл бұрын
Boa Jef! 💜
@JoaoGabriel-pk1ii
@JoaoGabriel-pk1ii 5 жыл бұрын
Tem como dar mais de um like? Conteúdo top d+ parabéns
@sir-kovu
@sir-kovu 3 жыл бұрын
Mayk fodão como sempre! Mestre!!!
@felipedantas8153
@felipedantas8153 4 жыл бұрын
aula incrível parabéns mayk, muito bom esses vídeos
@o-autentico
@o-autentico 5 жыл бұрын
noosa que video maravilhoso parabens cara
@ajoco99
@ajoco99 5 жыл бұрын
Excelente explicação Maykao
@PhilippeHenrique
@PhilippeHenrique 5 жыл бұрын
Essa explicação do bind foi genial! Obrigado!
@danielajardim6332
@danielajardim6332 5 жыл бұрын
mto boa aula. Obrigada Mayk
@mattfelix4990
@mattfelix4990 5 жыл бұрын
Cara, eu curto os vídeos do Mayk
@maykbrito
@maykbrito 5 жыл бұрын
grande Matt!! TAMO JUNTO MANO!! bora pra cima!!
@user-zv6vl6ne9z
@user-zv6vl6ne9z 5 жыл бұрын
Minha maior dificuldade até agora com JS é esse this e o prototype. Vou assistir esse video pra v se ajuda.
@luccaspio2254
@luccaspio2254 4 жыл бұрын
Thiago, também. Muito do que foi dito em relação aos erros e cuidados com as pegadihas precisa de um pouco de experiência e vivência pra lidar e realmente aprender, mas quanto mais codo, mais essas dificuldade vão embora.
@LucasLima-hj5sg
@LucasLima-hj5sg 3 жыл бұрын
Assino embaixo, não se bitole em decorar tudo de uma vez só. Muita coisa você aprende codando e errando, aprenda os conceitos e pratique bastante
@lucaswilliam8707
@lucaswilliam8707 4 жыл бұрын
aula boa dms, me ajudou muito a entender isso !!!
@thiagobevilaqua3303
@thiagobevilaqua3303 5 жыл бұрын
Caramba o cara matou a pau o assunto. Parabéns!!! :D
@maykbrito
@maykbrito 5 жыл бұрын
Hahahahaha tamo junto hajaj
@__und3f1n3d__
@__und3f1n3d__ 5 жыл бұрын
Sentido? Cara, que aula maravilhosa! Ótima didática e exemplos, Mayk! Só achei um pouquinho zuado a forma como o navegador lida com os escopos. (Mãããs deve ser coisa minha mesmo). O node me parece mais organizado com o module.exports . No mais, é muito interessante ver as diversas alternativas para lidar com as variações do this! rs Obrigado e Obrigado!
@mucicolin
@mucicolin 5 жыл бұрын
Muito bom!! Parabéns!
@principe.borodin
@principe.borodin 5 жыл бұрын
Excelente dica
@joseaugustomegres7868
@joseaugustomegres7868 5 жыл бұрын
Slc, to amando a rs
@willianzuqui8005
@willianzuqui8005 5 жыл бұрын
Gostei, me lembrou muito o principio OCP
@JeanPaulll
@JeanPaulll 5 жыл бұрын
Parabéns meu caro!
@maykbrito
@maykbrito 5 жыл бұрын
obg Jean!
@gabrielpereiramendes3463
@gabrielpereiramendes3463 3 жыл бұрын
#Excelente!
@arthurlara852
@arthurlara852 4 жыл бұрын
Nuss que dlç de explicação. Depois de eras tentando entender essa fita do this.
@rocketseat
@rocketseat 4 жыл бұрын
Boaaa Arthur!! Valeeu pelo feedback ! 💜
@nalbertcerqueira6079
@nalbertcerqueira6079 2 жыл бұрын
SEGUE ABAIXO UM RESUMÃO COM VÁRIOS CASOS DO THIS E ALGUMAS EXPLICAÇÕES ------------------------ CONTEXTO DE EXECUÇÃO DE UM MÉTODO -------------------------- 1) [This dentro de um método utilizando function declaration] * Com ou sem "use strict": o this faz referência apenas ao objeto (node e browser) 2) [This dentro de um método utilizando arrow function] * Com ou sem "use strict": o this retorna um objeto vazio (node) ou o objeto global (browser) isso ocorre pois arrow function heda o this do escopo/contexto acima, como acima dela não tem mais nenhuma função, ela pega o objeto global no browser ou um objeto vazio no caso do node. Vale ressaltar que um objeto não é um escopo ou contexto de execução. Os métodos feitos com funciton declaration referenciam o objeto porque a linguagem quis assim, e não porque um objeto cria escopo. 3) [this dentro de function declaration dentro de método feito com function declaration] * Com "use strict": como this dentro de uma function declaration que não é método retorna undefined, logo ela retornará undefined, ignorando a função (que é um método) logo acima dela (node e browser) * Sem "use strict": como o this dentro de uma function declaration que não é método retorna o objeto global, logo ele retorna o objeto global, ignorando a outra função acima dele (node e browser) 4) [this dentro de arrow function dentro de método feito com function declaration] * Com ou sem "use strict": como arrow functions herdam o this do escopo/contexto acima, a arrow function herdará o this do método criado com function declaration, e como o méotodo com function declaration retorna o objeto o qual o método está inserido, logo o this retornará o próprio objeto (node e browser) 5) [this dentro de arrow function dentro de método feito com arrow function] * Com ou sem "use strict": this retornará um objeto vazio caso esteja no node, ou retornará o objeto global caso esteja no browser. --------------------- CONTEXTO DE EXECUÇÃO DE FUNÇÃO QUE NÃO É MÉTODO ---------------------- [This dentro de uma function declaration que não é método] * Com "use strict": o this não faz referencia ao escopo global, retornando undefined (node e browser) * Sem "use strict": o this faz referência ao objeto global (node e browser) [This dentro de uma arrow function dentro de uma function declaration que não é método] * Com "use strict": a arrow function herdará o this do escopo acima, ou seja da function delcaration, e a function declaration no modo estrito retorna this como undefined, portanto this será undefined (node e browser) * Sem "use strict": a arrow function herdará o this do escopo acima, ou seja da function delcaration, e a function declaration sem modo estrito retorna this como objeto global, logo, this será global (node e browser) [This dentro de uma arrow function dentro de uma arrow function que não é método] * Com ou sem "use strict": o this nesse caso retornará um objeto vazio no caso do node ou o objeto global no caso do browser
@tiosam1041
@tiosam1041 4 жыл бұрын
Obrigado pelo video :D
@gilmarvictor4410
@gilmarvictor4410 4 жыл бұрын
Essa aula me salvou kakaka
@rocketseat
@rocketseat 4 жыл бұрын
Aeee! 💜💜💜
@viniciusbarbosa4635
@viniciusbarbosa4635 5 жыл бұрын
Amigos da Rocketseat , quando sai a proxima inscrição para o BootCamp?
@fpsgameplaypcs
@fpsgameplaypcs 5 жыл бұрын
Também estou na espera. Deve sair daqui uns 3 a 4 meses. Levando em consideração o ultimo.
@gabrielrufino9041
@gabrielrufino9041 5 жыл бұрын
Bom demais!
@amagami1008
@amagami1008 Жыл бұрын
Faltou falar a arrow functiion dentro da estrutura Class ele tem um comportamento diferente daquele jeito objeto declararado sem o Class
@Saudavelpro
@Saudavelpro 5 жыл бұрын
Podia fazer um de promises ou iterators
@PhilippeHenrique
@PhilippeHenrique 5 жыл бұрын
Qual tema vc usa no VS-CODE?
@douglasazevedo2586
@douglasazevedo2586 3 жыл бұрын
The Window.name property gets/sets the name of the window's browsing context
@douglasazevedo2586
@douglasazevedo2586 3 жыл бұрын
Note: window.name converts all stored values to their string representations using the toString method.
@r.m.2000
@r.m.2000 4 жыл бұрын
mas e o Global x Module.Exports? vc dizia que o this muitas vezes estava no global, mas quando dizia global nesse caso estava se referindo ao module.exports do arquivo, mas o global global mesmo, é diferente...
@camilaisabela
@camilaisabela 4 жыл бұрын
Se colocasse Camila Isabela 34 eu diria que sou eu! Ha ha ha 💙
@xmatheusftc
@xmatheusftc 5 жыл бұрын
Glr preciso de uma ajuda, creio eu que meu problema é com o this... Criei um componente no react-native que é um slider com varios videos, nisso eu exporto ele, e é passado varios URls através das props... Quando eu importo esse componente algumas funções ficam compromentidas, botão de pause/play não funciona, duas setas para passar os videos no scrollview também perdem a função. Ah, eu havia testado em uma tela de 'teste' sem importar, renderizando o componente sozinho, e ele funcionou perfeitamente.
@juliocesar2159
@juliocesar2159 5 жыл бұрын
Carai estava estudando isso agora nesse momento e aparece a notificação da Rocketseat ainda bem to meio confuso em relação ao this.
@maykbrito
@maykbrito 5 жыл бұрын
hahaha que massa isso mano!! hahaha tomara que te dê uma luz aí!! =D
@brunozago8855
@brunozago8855 5 жыл бұрын
Cara, é muito complicado ativar o mic do fone e ouvir em tempo real no speaker? Como eu poderia fazer esta função? Valeu!
@linecker94
@linecker94 2 жыл бұрын
será que é tão difícil fazer algo bem padronizado? (a linguagem)
@felipedantas8153
@felipedantas8153 4 жыл бұрын
16:30 fiz no meu vs code e retornou o valor global estou estranhando demais essas coisas de escopo acho que mudaram algo
@felipedantas8153
@felipedantas8153 4 жыл бұрын
erro meu já corrigi
@jgalmeida93
@jgalmeida93 5 жыл бұрын
Excelente vídeo! Você usa Linux? Se sim, qual distro?
@tdias25
@tdias25 5 жыл бұрын
Senão for mac, parece ser o Kubuntu ou Xubuntu
@maykbrito
@maykbrito 5 жыл бұрын
Opa. Valeu brother. Uso o Kali Linux
@jgalmeida93
@jgalmeida93 5 жыл бұрын
@@maykbrito Massa! Curto muito seus vídeos, didática excelente, parabéns!
@jonastavares420
@jonastavares420 5 жыл бұрын
Agooora entendi o/
@Bread-vk8fl
@Bread-vk8fl 2 жыл бұрын
O que raios é VIZ??????
@diogo.takeshi
@diogo.takeshi 5 жыл бұрын
Sou iniciante começando do 0 algum curso para recomendar para começar a programar desde ja agradeço
@toonydias
@toonydias 5 жыл бұрын
Cara, começa com o Curso em Vídeo do KZbin. Depois parte pra esse aqui. skylab.rocketseat.com.br/node/curso-java-script/group/manipulando-a-dom/lesson/alterando-estilos E vai fazendo os exercícios.
@dialeletico
@dialeletico 5 жыл бұрын
fragmento de POO?
5 жыл бұрын
Heisenberg
@maykbrito
@maykbrito 5 жыл бұрын
entendedores entenderão hahah
@mateusrocha4941
@mateusrocha4941 5 жыл бұрын
Cara, eu não entendi PN
@jerfsonconceicao853
@jerfsonconceicao853 5 жыл бұрын
Luis. Filipe Kauã
@otaviocr9434
@otaviocr9434 5 жыл бұрын
Repositório não existe :/
@maykbrito
@maykbrito 5 жыл бұрын
fala manin!! liberado.. obrigado pelo comentário!!
@mateushenrique6421
@mateushenrique6421 5 жыл бұрын
Segundo
@ToshiroKiss
@ToshiroKiss 5 жыл бұрын
this significa isto, esta? pensei que significasse DEMONIO, CAPETA, DESGRAÇA. opskaopskaopksoapsopakoska
@maykbrito
@maykbrito 5 жыл бұрын
aieuhaeiouahuihfe.. no JavaSpirit sim kkkkkk
@contraponto193
@contraponto193 3 жыл бұрын
vim buscar bronze e achei ouro XD
@amagami1008
@amagami1008 Жыл бұрын
Esse this no Javascript é uma bagunça, alguém por favor arrume essa bagunça
@denissouza8857
@denissouza8857 5 жыл бұрын
3 anos de estudo resumido em 48 minutos. SEN-SA-CI-O-NAL. value @Mayk Brito
@maykbrito
@maykbrito 5 жыл бұрын
hahahah que bom!!! obg pelo feedback
@FabimBdz
@FabimBdz Жыл бұрын
Esse aprofundamento todo deveria ter no curso pago do Explorer, porque as explicações lá deixam muito a desejar..
@caiqueandrade9523
@caiqueandrade9523 4 жыл бұрын
uma aula de 47 minutos e eu só entendo o idioma kkkk
@caiqueandrade9523
@caiqueandrade9523 4 жыл бұрын
maaas, contudo, toda via, muito obrigado pelo conteúdo!!!
@axfilipe
@axfilipe 5 жыл бұрын
Por isso que eu praticamente só uso TypeScript, JavaScript é uma salada que só por Deus.
@r.m.2000
@r.m.2000 4 жыл бұрын
que aflição ver vc colocar ";", no node nao precisa mais de ";"...tente nao usar vera que despoluirá todo o codigo
@amagami1008
@amagami1008 Жыл бұрын
Não
Array: Higher Order Functions | Mayk Brito
54:06
Rocketseat
Рет қаралды 35 М.
TUDO que você deve estudar de JavaScript antes do React
1:25:24
Rocketseat
Рет қаралды 315 М.
#programação #java #desenvolvedor
0:11
Mateus Java Programador
Рет қаралды 2,2 М.
Explicando a programação orientada a objetos NA PRÁTICA
1:05:15
What is an API? REST and RESTful? | MaykBrito
33:57
Rocketseat
Рет қаралды 293 М.
Conceitos importantes para dominar a base de NestJS
7:17
What is THIS in JavaScript? in 100 seconds
6:38
Fireship
Рет қаралды 225 М.
Unveiling CSS Grid in practice | Mayk Brito
36:17
Rocketseat
Рет қаралды 374 М.
Testes no NodeJS aplicando TDD com Jest | Diego Fernandes
1:20:44
Rocketseat
Рет қаралды 154 М.
JavaScript - Maneiras de criar objetos - Root #03
38:02
Rocketseat
Рет қаралды 27 М.
Responsividade na Prática | Masterclass #08
1:30:16
Rocketseat
Рет қаралды 235 М.