Você se lembra de quando estava aprendendo JavaScript? Qual foi o momento em que você "entendeu" de repente? (Por exemplo, meu momento de CSS foi quando eu aprendi sobre o modelo de caixa ...)
A razão pela qual estou perguntando é que estou aprendendo JS por 6 semanas, mas ainda acho isso bastante confuso. Aqui está uma citação de algo que li recentemente no SO:
"..funções agem de maneira semelhante aos valores, pois method é uma propriedade do objeto que possui o valor de uma função (que também é um objeto)."
Estou curioso para saber se você também ficou confuso no começo e o que fez você entender.
(Estou lendo o Sitepoints "Simplesmente JavaScript", o livro "Eloquent JavaScript" e seguindo o tutorial Essencial de Lynda sobre JavaScript. Não tenho nenhuma experiência em programação e foi péssimo em matemática;)
Obrigado!
Respostas:
Acho que o maior momento "AHA" para mim foi quando compreendi completamente o seguinte:
Valores variáveis podem ser qualquer coisa, incluindo funções
fonte
Para mim, foi quando entendi que o contexto (para que
this
aponta) de uma função pode ser alterado arbitrariamentehttp://www.digital-web.com/articles/scope_in_javascript/
fonte
Eu concordo com o que algumas das outras respostas abordaram; O momento do A-ha para mim foi quando eu entendi o que era um fechamento .
Postei uma resposta para a pergunta O que é um fechamento? para ajudar a explicar isso.
Sem entender os fechamentos, o Javascript é uma linguagem bastante limitada, com alguns recursos agradáveis de sintaxe abreviada, como
[]
para matrizes e JSON ({}
para objetos), e no contexto do navegador, o DOM (window
/document
).No entanto, depois de entender os fechamentos, um monte de entendimento se encaixa :
Recursos
fonte
Eu acho que a linguagem mais essencial 'Aha's para mim em Javascript era
Para todos esses tópicos, você deve encontrar muitos recursos na web.
(E não pense que tudo se tornará totalmente lógico: JavaScript é confuso)
fonte
O javascript foi difícil para mim quando comecei a aprendê-lo alguns anos atrás, porque comecei a aprender desenvolvimento web a partir das coisas do lado do servidor (php e perl).
Não era tanto a sintaxe ou OOP, ou qualquer coisa que me escapasse, mais o javascript ao vivo e orientado a eventos - passando de "faça isso e isso e isso e servi-lo e pronto e pronto" para "fazer isso e isso e isso e então estamos em constante estado de espera para que algo aconteça e responda até que o usuário saia da página ". Isso realmente me impressionou.
Acho que não posso citar nada em particular que realmente o tenha afundado (nenhum momento definitivo "aha!" - se eu tivesse que citar um momento específico, diria que quando estava aprendendo AJAX para um script de sugestão de pesquisa, mas IMO isso é apenas arbitrário), mas quando finalmente percebi a diferença, tudo ficou muito mais fácil a partir daí :)
fonte
Quando finalmente entendi a ideia de que posso redefinir qualquer parte do idioma para o que eu quiser. A esse respeito, é ainda mais poderoso que C. Por exemplo, se eu não gostar da
toString()
função padrão , implementarei a minha:fonte
Quando percebi que você poderia definir uma propriedade em um objeto de função.
Também quando finalmente entendi qual era o protótipo.
fonte
E o momento do a-ha quando você finalmente obtém esses resultados.
fonte
Aha momento # 1, para mim: perceber que o JavaScript, a linguagem, é distinto de seu uso principal: HTML dinâmico e programação da Web do lado do cliente. Eu ficaria frustrado com o JavaScript, quando realmente estava frustrado com as incompatibilidades do DOM e do navegador.
Aha momento # 2: Entendendo que a herança pode ser executada de várias maneiras. A herança típica baseada em classe é apenas uma. Existem outros, ou seja, baseados em protótipos (o estilo usado em JavaScript).
Em relação ao item 1, não resisto a recomendar o JavaScript: The Good Parts . Ele trata o JavaScript como uma linguagem refinada.
fonte
Sem escopo e elevação de bloco.
fonte
É apenas Scheme com sintaxe.
Essa foi a grande para mim.
fonte
O jQuery foi basicamente o momento do 'a-ha' para mim. A sintaxe parecia familiar após ter muita experiência com a sintaxe LINQ / lambda em C #.
fonte