- Características da linguagem
- Sintaxe básica
- var, let, const
- null vs undefined
- Operadores
- typeof
- Conversao de tipos
- Functions
- Declaration
- Expression
- Anonymous
- Arrow
- Scope chain (Hoisting)
- Execution context
- Closures e Funções Aninhadas
- By value & By reference
- A keyworkd this
- Criação de Objetos
- Json vs object literals
- this keyword
- Constructor
- Inheritance e Prototype chain (herança de protótipos)
- Call, Bind, Apply
- Bom (Browser Object Model)
- Dom (Document Object Model)
- use strict
- Callback
- Event bubbling, capturing
- Eventos de tempo
- setTimeout
- setInterval
- Tratamento de erros
- try, catch
- finally
- throw
- Requisições
- AJAX - XMLHttpRequest
- Websockets
- Segurança
- Não usar eval
- http vs https
- Dependency injection
- Iifes (Imediatelly Invoked Function Expression)
- Object Orientation
- Factories
- Composition
- Currying
- Partials
- Functors
- Constructors
- Stream
- Prototype Pattern
- Module Pattern
- Revealing Module Pattern
- Builder
- Façade
- Strategy
- Builder
- Constructors
- Trampolim
- Outros patterns famosos
Desde a versão 52, o Chrome suporta ES6 e ES7.
- Symbols
- Classes
- Template Literals
- Spread Operator
- Rest Operator
- Arrow Functions / Lambda
- Destructuring
- Map, Set, WeakMap, WeakSet (data structures)
- import/ export (modules)
- Map, reduce, filter, forEach
- Promises
- Async await
- Generators
- Iterators & For of, For in
- Proxies/Reflect (Intercept properties access)
- Promises
- Async Await
- Definição de DOM
- Seletores
- Eventos
- Keyboard
- keydown
- keyup
- keypress
- Mouse
- click
- dblclick
- mouseup
- mousedown
- Keyboard
- Manipulação de Nós
- createElement
- appendChild
- insertBefore
- replaceChild
- removeChild
- addEventListener
- Problemas do DOM
- window
- document
- Cookie
- LocalStorage
- SessionStorage
Usando Chrome dev Tools:
- Abas
- Elements
- Alterando CSS
- Alterando Dom
- Filtro de busca
- Valores computados
- Listeners
- Dom Breakpoints
- Console
- Sources
- Sources
- Snippets
- Network
- Analisar Requisição
- Performance
- Analise de performance
- Memory
- Application
- Security
- Audits
- Modo Mobile
- Elements
O V8 é uma engine javascript de codigo aberto criada e mantida pelo Google, escrita em C++. É usada no Google Chrome e no Node.js. O V8 pode rodar sozinho ou dentro de outra aplicação C++.
Turbofan é um compilador de otimização.
- Melhor performance de execução comparado com Ignition;
- Mais lento para gerar codigo, mas é mais otimizado;
O Ignition é um interpretador baseado em registradores de baixo nivel que usa o backend do Turbofan.
- Para ambientes de pouca memória, inicialmente usado para dispositivos mobile, agora usado em todas plataformas;
- Rapida geração de bytecode, melhora velocidade de startup das paginas;
- Integra com Turbofan, faz otimização com turbofan mais simples;
O garbage collector do V8.