Olá Felipe, tudo bem com você?
Foi o que o instrutor explicou, quando utilizamos em qualquer lugar do nosso código o document.querySelector
temos que o contexto do this
é de fato o document
, entretanto quando atribuímos a uma variável estamos mudando o contexto léxico, por isso quando tentamos fazer apenas (você pode testar no console do firefox) :
let $ = document.querySelector
O navegador nos da uma exceção:
'querySelector' called on an object that does not implement interface Document.
Indicando que $
não implementaDocument
, para solucionar essa exceção teríamos que definir o $
como sendo um atributo de document da seguinte maneira:
Document.$
Ai poderíamos utilizar o $ = document.querySelector
pois agora esta associado, entretanto é uma maneira muito forte de fazer a associação, e por isso utilizamos o bind
pois devolvemos uma referência de Document
associada a função querySelector
Agora uma curiosidade, se você fizer $
no console do Chrome
ele nos devolvera o seguinte:
ƒ $(id) {
// eslint-disable-next-line no-restricted-properties
return document.getElementById(id);
}
Essa é uma outra maneira que podemos trabalhar sem ter que trabalhar com o bind
pois ai temos o contexto da função :)
Conseguiu compreender ? Qualquer coisa estou a disposição!