SlideShare uma empresa Scribd logo
1 de 36
Ramon Felipe de OliveiraRamon Felipe de Oliveira
Page  2
Origens
Javascript surgiu em 1995 e
quando lançado se chamava
LiveScript
BrendanEich
Page  3
Numa época de conexões
discadas, seu foco era outro:
Evitar chamadas
desnecessárias ao servidor.
Origens
Page  4
Novo cenário
De doze linhas, para duzentas.
Esta questão
pode ser vista
no ie6
hoje.
Page  5
Novo cenário
O cenário mudou drasticamente...
... mas o Javascript mudou muito pouco.
Browsers começaram a oferecer
suporte
para Html dinâmico e surgiu o DOM.
Page  6
DOM
O Document Object Model (DOM) é uma interface de programação
para documentos HTML e XML.
Ele provê uma representação estruturada do documento e define um
meio pelo qual a estrutura pode ser acessada por programas
permitindo-os alterar a estrutura do documento, estilo e conteúdo
Essencialmente ele conecta páginas de internet a scripts ou
linguagens de programação.
Uma página de internet é um documento.
Page  7
Características
Pequena
Interpretada (compilada)
Sofisticada
Linguagem funcional
Linguagem cliente
Baixa tipagem
Objetos são “containers”
Herança por protótipos
Page  8
Tipos principais
Page  9
Typeof
Page  10
var
Page  11
Objeto em JS
Page  12
Criando um objeto
Page  13
Acessando membros
Page  14
Sintaxe Literal
var obj = {
nome: “Fusca",
detalhes: {
cor: “vermelho",
ano: 1988
}
}
Page  15
Functions
Page  16
Functions
Page  17
Método
Page  18
Função add
function add(x, y) {
var total = x + y;
return total;
}
Page  19
Funções
Page  20
function add() {
var soma = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
soma += arguments[i];
}
return soma;
}
Page  21
Funções anônimas
var add = function() {
var soma = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
soma += arguments[i];
}
return soma;
}
Pode se usar recursão utilizando a função
implícita arguments.callee.
Page  22
Herança por Protótipo
Page  23
Herança por Protótipo
Page  24
Herança por Protótipo
Page  25
Problema
Page  26
function criarPessoa(nome, sobrenome) {
return {
nome: nome,
sobrenome: sobrenome
}
}
function nomeCompleto(pessoa) {
return pessoa.nome + ‘ ‘ + pessoa.sobrenome;
}
function nomeCompletoInvertido(pessoa) {
return pessoa.sobrenome + ', ' + pessoa.nome;
}
Solução 1
Page  27
> p = criarPessoa(“João", “Silva");
> nomeCompleto(p) João Silva
> nomeCompletoInvertido(p) Silva, João
Apesar de funcionar, não é uma
solução interessante.
Provavelmente, logo existirá dezenas
de funções no global namespace.
Page  28
function criarPessoa(nome, sobrenome) {
return {
nome: nome,
sobrenome : sobrenome,
nomeCompleto: function() {
return pessoa.nome + ‘ ‘ + pessoa.sobrenome;
},
nomeCompletoInvertido: function() {
return pessoa.sobrenome + ', ' + pessoa.nome;
}
}
}
Solução 2
Page  29
> s = criarPessoa(“João", “Silva")
> s. nomeCompleto() João Silva
> s. nomeCompletoInvertido() Silva, João
Page  30
Solução 3
function Pessoa(nome, sobrenome) {
this.nome = nome;
this.sobrenome = sobrenome;
}
Pessoa.prototype.nomeCompleto = function() {
return this.nome+ ' ' + this.sobrenome;
}
Pessoa.prototype.nomeCompletoInverso = function() {
return this.sobrenome + ', ' + this.nome;
}
Page  31
Prototype
Page  32
Funções Internas
Page  33
Closures
function realizaSoma(a) {
return function(b) {
return a + b;
}
}
x = realizaSoma(5);
y = realizaSoma(20);
x(6) ? y(7) ?
Page  34
The old-school way
Page  35
Module Pattern
Page  36
Revealing Module Pattern

Mais conteúdo relacionado

Destaque

Scripting languages
Scripting languagesScripting languages
Scripting languagesteach4uin
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Clavis Segurança da Informação
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionIn a Rocket
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 

Destaque (8)

J query 1
J query 1J query 1
J query 1
 
Tdc2010 web
Tdc2010 webTdc2010 web
Tdc2010 web
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Scripting languages
Scripting languagesScripting languages
Scripting languages
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 

Semelhante a Javascript semana computação

ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryMarketing Digital ODIG
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 
Introdução à programação javascript
Introdução à programação javascriptIntrodução à programação javascript
Introdução à programação javascriptNuno Palma
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009Caue Guerra
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Isaac Barros
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdfronaldo ramos
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Felipe Pimentel
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2rodrigoareis
 
Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formulariosguestd9e271
 

Semelhante a Javascript semana computação (20)

ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQuery
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 
Php05
Php05Php05
Php05
 
Introdução à programação javascript
Introdução à programação javascriptIntrodução à programação javascript
Introdução à programação javascript
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdf
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]
 
Floggy-GUJavaSC-2008-09-20
Floggy-GUJavaSC-2008-09-20Floggy-GUJavaSC-2008-09-20
Floggy-GUJavaSC-2008-09-20
 
Javascript
JavascriptJavascript
Javascript
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formularios
 

Javascript semana computação

Notas do Editor

  1. Para o usuário, javascript já ajudava muito ao evitar chamadas desnecessários ao servidor, numa época de conexões discadas