SlideShare uma empresa Scribd logo
Ramon Felipe de Oliveira
Origens Javascript surgiu em  1995  e quando lançado se chamava LiveScript Brendan Eich
Numa época de conexões discadas, seu foco era outro: Evitar chamadas desnecessárias ao servidor. Origens
Novo cenário De doze linhas, para  duzentas. Esta questão pode ser vista  no  ie 6  hoje.
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.
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.
Características Pequena Interpretada (compilada) Sofisticada Linguagem funcional Linguagem cliente Baixa tipagem Objetos são “containers” Herança por protótipos
Tipos principais
Typeof
var
Objeto em JS
Criando um objeto
Acessando membros
Sintaxe Literal var obj = {  nome: “Fusca",  detalhes: {    cor: “vermelho",   ano: 1988 } }
Functions
Functions
Método
Função add function add(x, y) {  var total = x + y;  return total;  }
Funções
function add() {    var soma = 0;    for (var i = 0, j = arguments.length; i < j; i++) {   soma += arguments[i];  }  return soma;  }
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.
Herança por Protótipo
Herança por Protótipo
Herança por Protótipo
Problema
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
> p = criarPessoa(“João&quot;, “Silva&quot;);  > 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.
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
> s = criarPessoa(“João&quot;, “Silva&quot;) > s. nomeCompleto()  João Silva   > s. nomeCompletoInvertido()  Silva, João
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; }
Prototype
Funções Internas
Closures function realizaSoma(a) {    return function(b) {  return a + b;    } } x =  realizaSoma(5 );  y =  realizaSoma(20 );  x(6) ? y(7) ?
The old-school way
Module Pattern
Revealing Module Pattern

Mais conteúdo relacionado

PPT
Tdc2010 web
PDF
Revista programar php -iniciação
PDF
Introdução a linguagem Go
PDF
Ruby - Criando código para máquinas e humanos
PPTX
Estrutura de Dados - Aula 04
KEY
MongoDB, Banco de Dados orientado a documento
PPTX
Estrutura de Dados - Aula 08
Tdc2010 web
Revista programar php -iniciação
Introdução a linguagem Go
Ruby - Criando código para máquinas e humanos
Estrutura de Dados - Aula 04
MongoDB, Banco de Dados orientado a documento
Estrutura de Dados - Aula 08

Mais procurados (15)

PPTX
Workshop Python
KEY
Design de código: princípios e práticas para ter um código sustentável
PDF
Plinio Balduino: JavaScript Funcional
PPTX
Estrutura de Dados - Aula 06
ODP
Groovy para javeiros - Migração Painless
ODP
Linguagem C 09 Ponteiros
PPTX
Estrutura de Dados - Aula 03
PDF
O que é que o Java não tem?
KEY
Introdução ao Framework Grails
PDF
Perl Moderno, dia5
PDF
PHP 5.3 - What's new?
PPTX
Shell script i
PDF
Curso completo php
PPTX
Grails - Destaques (para quem já sabe Java)
Workshop Python
Design de código: princípios e práticas para ter um código sustentável
Plinio Balduino: JavaScript Funcional
Estrutura de Dados - Aula 06
Groovy para javeiros - Migração Painless
Linguagem C 09 Ponteiros
Estrutura de Dados - Aula 03
O que é que o Java não tem?
Introdução ao Framework Grails
Perl Moderno, dia5
PHP 5.3 - What's new?
Shell script i
Curso completo php
Grails - Destaques (para quem já sabe Java)
Anúncio

Destaque (8)

PPT
Javascript semana computação
PPT
J query 1
PPTX
Linguagem da programação
PPT
Scripting languages
PDF
Python para iniciantes
PDF
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
PDF
Learn BEM: CSS Naming Convention
PDF
SEO: Getting Personal
Javascript semana computação
J query 1
Linguagem da programação
Scripting languages
Python para iniciantes
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Learn BEM: CSS Naming Convention
SEO: Getting Personal
Anúncio

Semelhante a Javascript (20)

PDF
JavaScript - A Linguagem
PDF
Javascript Recuperando Dados De Formularios
PPT
Floggy-GUJavaSC-2008-09-20
PPTX
Algoritmos e Estrutura de Dados - Aula 03
PPT
Floggy-IIBoot-2008-09-25
KEY
PDF
Grails parte 1 - introdução
PPT
PHP GERAL
PPTX
Javascript
PDF
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
PDF
javascript_funcional.pdf
PPTX
Javascript para CSharpers 4 - POO
PPTX
Aula_Funcoes_PHP para alunos inciantes em WEB
PDF
Ajax em java
PDF
Turbinando o desenvolvimento Android com Kotlin
PDF
Por que você deveria aprender python?
PDF
Programando Melhor - Flisol
PDF
Linguagens de programação - Go
PDF
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
PDF
Realtime com node.js e socket.io
JavaScript - A Linguagem
Javascript Recuperando Dados De Formularios
Floggy-GUJavaSC-2008-09-20
Algoritmos e Estrutura de Dados - Aula 03
Floggy-IIBoot-2008-09-25
Grails parte 1 - introdução
PHP GERAL
Javascript
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
javascript_funcional.pdf
Javascript para CSharpers 4 - POO
Aula_Funcoes_PHP para alunos inciantes em WEB
Ajax em java
Turbinando o desenvolvimento Android com Kotlin
Por que você deveria aprender python?
Programando Melhor - Flisol
Linguagens de programação - Go
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Realtime com node.js e socket.io

Javascript

  • 1. Ramon Felipe de Oliveira
  • 2. Origens Javascript surgiu em 1995 e quando lançado se chamava LiveScript Brendan Eich
  • 3. Numa época de conexões discadas, seu foco era outro: Evitar chamadas desnecessárias ao servidor. Origens
  • 4. Novo cenário De doze linhas, para duzentas. Esta questão pode ser vista no ie 6 hoje.
  • 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.
  • 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.
  • 7. Características Pequena Interpretada (compilada) Sofisticada Linguagem funcional Linguagem cliente Baixa tipagem Objetos são “containers” Herança por protótipos
  • 10. var
  • 14. Sintaxe Literal var obj = { nome: “Fusca&quot;, detalhes: { cor: “vermelho&quot;, ano: 1988 } }
  • 18. Função add function add(x, y) { var total = x + y; return total; }
  • 20. function add() { var soma = 0; for (var i = 0, j = arguments.length; i < j; i++) { soma += arguments[i]; } return soma; }
  • 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.
  • 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
  • 27. > p = criarPessoa(“João&quot;, “Silva&quot;); > 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.
  • 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
  • 29. > s = criarPessoa(“João&quot;, “Silva&quot;) > s. nomeCompleto() João Silva > s. nomeCompletoInvertido() Silva, João
  • 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; }
  • 33. Closures function realizaSoma(a) { return function(b) { return a + b; } } x = realizaSoma(5 ); y = realizaSoma(20 ); x(6) ? y(7) ?

Notas do Editor

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