SlideShare a Scribd company logo
1 of 37
JavascriptAvançado Bruno Tavares
Referências
Uma “variável” é um ponteiropara um espaço de memóriaaondealgum valor éarmazenado.
Referênciaspodemser re-alocadas varref= {}; console.log(typeof ref); //object ref  = [1 , 4, 2]; console.log(typeof ref); //object ref=false; console.log(typeof ref); //boolean
varref= {}; {} var ref2 =ref;
varref= {}; {} var ref2 =ref; [1,2,3] ref=[1,2,3];
Referênciasglobais alert('Teste'); window.alert('Teste'); refGlobal='abc'; console.log(window.refGlobal); //abc console.log(window['refGlobal']); //abc
Exercícios //1 var a =3; var b = a; console.log(a); console.log(b); a =9; console.log(a); console.log(b);
Exercícios //2 functionsetName(obj, name){ obj.name= name; } var data = {     name : 'Fulano' }; var copy = data; setName(copy, 'Ciclano'); console.log(copy.name); console.log(data.name);
Exerícios //3 functionsetVariables(){ var a =1;         b =3;       c =4;   } console.log(window.a); console.log(window.b); console.log(window.c); setVariables(); console.log(window.a); console.log(window.b); console.log(window.c);
Objetos
Podemser vistas como Hash Tables, ouconjuntoschave-valor. varconfig= {}; config.expansivel =true; config.altura=200;
Chamamososvalores de propriedades de um objeto. Quandotrata-se de umafunção, chamamos de métodos.
varconfig= { expansivel: true, altura: 200, ehExpansivel: function(){ returnthis.expansivel;     }, getAltura: function()     { returnthis.altura;     } }; config.ehExpansivel(); //true
Funciona com Tudo var hoje =newDate(); hoje.bar='teste'; hoje.foo=function() { alert(this.bar); } hoje.foo(); //teste
JSON Objeto JavaScript emlinguagem literal { total: 2,     dados: [         { nome: "Fulano", idade: 22 },         { nome: "Ciclano", idade: 34 },     ] }
PropriedadesExpando varconfig= {     expanded: false }; config.expanded;    //false config['expanded']; //false
//ReferenceError: Ext is not defined if(Ext){ alert('Ext JS framework included!'); } // bom :) if(window['Ext']){ alert('Ext JS framework included!'); }
var combo   =document.getElementById('my_combo'),      config  = { valueField: 'id' },     data    = { id: 1 }; //má tentativa de acessar data.id. Péssima! combo.value=eval('data. '+config.valueField); // bom :) combo.value=data[config.valueField];
Exercício //1 ... alert(data.total); //10 alert(data.rows[0].id); //3 //2 ... alert(fulano.nome); //Fulano alert(fulano.getNome()); //Fulano //3 var teste1 = {nome: 'Fulano’}     teste2 = {descricao: 'LoremIpsum'}; //... alerta(teste1, 'nome'); //Fulano alerta(teste2, 'descricao'); //LoremIpsum
Funções
FunçõescomoObjetos functiongerarID(){ gerarID.semente++; return gerarID.semente;  } gerarID.semente=0; gerarID(); //1 gerarID(); //2
NotaçõesparaFunção functionfoo(){} == varfoo=function(){};
FunçõesAnônimas varconector=function(conexao) { returnfunction()     { alert(conexao);     }; } varconectorMySQL=conector('connectmysql'); varconectorSQLite=conector('connectsqlite'); conectorMySQL(); //connectmysql conectorSQLite();//connectsqlite
FunçõesAnônimas varexecutaRepeticao=function(repeticao, funcao) { for(var i =0 ; i < repeticao ; i++){ funcao.call();     } } executaRepeticao(2, function(){ alert('teste'); }); //'teste'! 'teste'!
Argumentos functionsoma() { var i =0,         len =arguments.length,         resultado =0; for(; i < len ; i++){         resultado +=arguments[i];     } return resultado; } soma(2); //2 soma(2, 8); //10 soma(1, 2, 4); //7
Invocando varconfig= { mensagem: 'Olá de ' }; vardizNome=function(nome){ alert(this.mensagem+ nome); } dizNome('Fulano'); //undefinedFulano dizNome.call(config, 'Fulano'); //Olá de Fulano dizNome.apply(config, ['Fulano']); //Olá de Fulano
.call vs .apply varfoo=function(a, b, c) { return a + b + c; } //4 parâmetros, scope + n diversos foo.call(this, 1, 2, 3);  //2 parametros, scope + array de diversos foo.apply(this, [1, 2, 3]);
Exercícios //1 … varformataReal=formatadorMonetario('R$'), formataDolar=formatadorMonetario('$'); alert(formataReal(2.3)); //R$2.3 alert(formataDolar(2.3)); //$2.3 //2 … var concatenaHifen = concatenador(' - '),     concatenaPonto = concatenador('.'); //Javascript-Ninja alert(concatenaHifen('JavaScript', 'Ninja'));  //Ext.panel.Panel alert(concatenaPonto('Ext', 'panel', 'Panel'));
Exercícios var data1 = { name : 'AAAAA' },     data2 = { name: 'BBBBB' }; functionsetName(data, name){ this.name= name; } data1.setName = data2.setName =setName; data1.setName(data2, 'FFFFFF'); console.log(data1.name); console.log(data2.name); setName.call(data2, data1, 'GGGGG'); console.log(data1.name); console.log(data2.name); data2.setName.apply(data1, [data2, 'LLLLL']); console.log(data1.name); console.log(data2.name);
FunçõescomoConstrutores functionpessoa(){ } pessoa(); Aparentementeumafunçãocomum. Um simples exemplo de programaçãointerpretada.
FunçõescomoConstrutores functionPessoa(){ } var fulano =newPessoa(); Podeserconsiderado um construtor, apenasadicionandonew
Atributos functionPessoa(nome){ this.nome=nome; } var fulano =newPessoa("Fulano"); alert(fulano.nome); //Fulano
Prototype functionPessoa(nome){ this.nome=nome; } Pessoa.prototype= { dizerOla: function(){ alert('Olá de '+this.nome);     } }; var fulano =newPessoa("Fulano"); fulano.dizerOla(); Prototype podeserconsiderado o corpo da classe. Aondesãoassociadosmétodos e atributos.
Prototype functionPessoa(nome){ this.nome=nome; } var fulano =newPessoa("Fulano"); alert(fulano.dizerOla); //undefined Pessoa.prototype.dizerOla=function(){ alert('Olá de '+this.nome); }; alert(fulano.dizerOla); //function fulano.dizerOla(); //Olá de Fulano Alterar o protótipo de umaclassetêmefeitotambémeminstânciaspreviamentecriadas.
Herança //retorna um objeto com todos métodos de pessoa newPessoa();  //cria nova classe pirada varPirata=function(){}; //herda os métodos de pessoa Pirata.prototype=newPessoa(); //teste var jack =newPirata("Jack"); jack.dizerOla(); //Olá de Jack
Exercício varatleta=newAtleta('Fulano'); alert(atleta.getNome()); //Fulano atleta.setNome('Fulano da Silva'); alert(atleta.getNome()); //Fulano da Silva varjogador=newJogadorFutebol('Ciclano'); alert(jogador.getNome()); //Ciclano jogador.marcarGols(); alert(jogador.getGols()); //1 jogador.marcarGols(2); alert(jogador.getGols()); //3

More Related Content

What's hot

JavaScript Control Statements II
JavaScript Control Statements IIJavaScript Control Statements II
JavaScript Control Statements IIReem Alattas
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Java: Regular Expression
Java: Regular ExpressionJava: Regular Expression
Java: Regular ExpressionMasudul Haque
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalRodrigo Kiyoshi Saito
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Oracle 10g Forms Lesson 7
Oracle 10g Forms Lesson  7Oracle 10g Forms Lesson  7
Oracle 10g Forms Lesson 7KAMA3
 
The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)Scott Wlaschin
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
ES2015 (ES6) Overview
ES2015 (ES6) OverviewES2015 (ES6) Overview
ES2015 (ES6) Overviewhesher
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
Parboiled explained
Parboiled explainedParboiled explained
Parboiled explainedPaul Popoff
 
(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and Protobuf(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and ProtobufGuido Schmutz
 

What's hot (20)

JavaScript Control Statements II
JavaScript Control Statements IIJavaScript Control Statements II
JavaScript Control Statements II
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Java: Regular Expression
Java: Regular ExpressionJava: Regular Expression
Java: Regular Expression
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Oracle 10g Forms Lesson 7
Oracle 10g Forms Lesson  7Oracle 10g Forms Lesson  7
Oracle 10g Forms Lesson 7
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Clean code slide
Clean code slideClean code slide
Clean code slide
 
3 Introducción al lenguaje PHP
3 Introducción al lenguaje PHP3 Introducción al lenguaje PHP
3 Introducción al lenguaje PHP
 
The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
ES2015 (ES6) Overview
ES2015 (ES6) OverviewES2015 (ES6) Overview
ES2015 (ES6) Overview
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Php operators
Php operatorsPhp operators
Php operators
 
Parboiled explained
Parboiled explainedParboiled explained
Parboiled explained
 
(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and Protobuf(Big) Data Serialization with Avro and Protobuf
(Big) Data Serialization with Avro and Protobuf
 

Viewers also liked

Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci
 
Orientação a objetos para dummies - Acoplamento
Orientação a objetos para dummies - AcoplamentoOrientação a objetos para dummies - Acoplamento
Orientação a objetos para dummies - AcoplamentoLucas pk'
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJSWilson Mendes
 
Aprendendo inteligência pierluigi piazzi
Aprendendo inteligência   pierluigi piazziAprendendo inteligência   pierluigi piazzi
Aprendendo inteligência pierluigi piazziLucas pk'
 
Propagacao do calor.ppt
Propagacao do calor.pptPropagacao do calor.ppt
Propagacao do calor.pptLucas pk'
 
7 Myths of formal methods
7 Myths of formal methods7 Myths of formal methods
7 Myths of formal methodsLucas pk'
 
Arquiteturas escaláveis o exemplo da spotify aplicado ao e commerce
Arquiteturas escaláveis  o exemplo da spotify aplicado ao e commerceArquiteturas escaláveis  o exemplo da spotify aplicado ao e commerce
Arquiteturas escaláveis o exemplo da spotify aplicado ao e commerceRafael Rocha
 
10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systemsXavier Amatriain
 

Viewers also liked (10)

Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + Angular
 
Orientação a objetos para dummies - Acoplamento
Orientação a objetos para dummies - AcoplamentoOrientação a objetos para dummies - Acoplamento
Orientação a objetos para dummies - Acoplamento
 
Barroco
BarrocoBarroco
Barroco
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJS
 
Aprendendo inteligência pierluigi piazzi
Aprendendo inteligência   pierluigi piazziAprendendo inteligência   pierluigi piazzi
Aprendendo inteligência pierluigi piazzi
 
Propagacao do calor.ppt
Propagacao do calor.pptPropagacao do calor.ppt
Propagacao do calor.ppt
 
7 Myths of formal methods
7 Myths of formal methods7 Myths of formal methods
7 Myths of formal methods
 
Arquiteturas escaláveis o exemplo da spotify aplicado ao e commerce
Arquiteturas escaláveis  o exemplo da spotify aplicado ao e commerceArquiteturas escaláveis  o exemplo da spotify aplicado ao e commerce
Arquiteturas escaláveis o exemplo da spotify aplicado ao e commerce
 
10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Similar to Javascript Avançado

JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdadeLuis Vendrame
 
Java script para adultos
Java script para adultosJava script para adultos
Java script para adultosDiego Honorio
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesCarlos Santos
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Evolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptEvolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptJean Carlo Emer
 
Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoLeonardo Borges
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
A explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoA explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoNando Vieira
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdfronaldo ramos
 

Similar to Javascript Avançado (20)

JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdade
 
Java script para adultos
Java script para adultosJava script para adultos
Java script para adultos
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Tutorial JavaFX simples
Tutorial JavaFX simplesTutorial JavaFX simples
Tutorial JavaFX simples
 
Javascript
JavascriptJavascript
Javascript
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Evolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptEvolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScript
 
Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncrono
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
PHP 5.3 - Funções
PHP 5.3 - FunçõesPHP 5.3 - Funções
PHP 5.3 - Funções
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
PHP fora da Web
PHP fora da WebPHP fora da Web
PHP fora da Web
 
Shell script
Shell scriptShell script
Shell script
 
A explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoA explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo preto
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdf
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 

Recently uploaded

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 

Recently uploaded (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Javascript Avançado

  • 3. Uma “variável” é um ponteiropara um espaço de memóriaaondealgum valor éarmazenado.
  • 4. Referênciaspodemser re-alocadas varref= {}; console.log(typeof ref); //object ref = [1 , 4, 2]; console.log(typeof ref); //object ref=false; console.log(typeof ref); //boolean
  • 5. varref= {}; {} var ref2 =ref;
  • 6. varref= {}; {} var ref2 =ref; [1,2,3] ref=[1,2,3];
  • 7. Referênciasglobais alert('Teste'); window.alert('Teste'); refGlobal='abc'; console.log(window.refGlobal); //abc console.log(window['refGlobal']); //abc
  • 8. Exercícios //1 var a =3; var b = a; console.log(a); console.log(b); a =9; console.log(a); console.log(b);
  • 9. Exercícios //2 functionsetName(obj, name){ obj.name= name; } var data = { name : 'Fulano' }; var copy = data; setName(copy, 'Ciclano'); console.log(copy.name); console.log(data.name);
  • 10. Exerícios //3 functionsetVariables(){ var a =1; b =3; c =4; } console.log(window.a); console.log(window.b); console.log(window.c); setVariables(); console.log(window.a); console.log(window.b); console.log(window.c);
  • 12. Podemser vistas como Hash Tables, ouconjuntoschave-valor. varconfig= {}; config.expansivel =true; config.altura=200;
  • 13. Chamamososvalores de propriedades de um objeto. Quandotrata-se de umafunção, chamamos de métodos.
  • 14. varconfig= { expansivel: true, altura: 200, ehExpansivel: function(){ returnthis.expansivel; }, getAltura: function() { returnthis.altura; } }; config.ehExpansivel(); //true
  • 15. Funciona com Tudo var hoje =newDate(); hoje.bar='teste'; hoje.foo=function() { alert(this.bar); } hoje.foo(); //teste
  • 16. JSON Objeto JavaScript emlinguagem literal { total: 2, dados: [ { nome: "Fulano", idade: 22 }, { nome: "Ciclano", idade: 34 }, ] }
  • 17. PropriedadesExpando varconfig= { expanded: false }; config.expanded; //false config['expanded']; //false
  • 18. //ReferenceError: Ext is not defined if(Ext){ alert('Ext JS framework included!'); } // bom :) if(window['Ext']){ alert('Ext JS framework included!'); }
  • 19. var combo =document.getElementById('my_combo'), config = { valueField: 'id' }, data = { id: 1 }; //má tentativa de acessar data.id. Péssima! combo.value=eval('data. '+config.valueField); // bom :) combo.value=data[config.valueField];
  • 20. Exercício //1 ... alert(data.total); //10 alert(data.rows[0].id); //3 //2 ... alert(fulano.nome); //Fulano alert(fulano.getNome()); //Fulano //3 var teste1 = {nome: 'Fulano’} teste2 = {descricao: 'LoremIpsum'}; //... alerta(teste1, 'nome'); //Fulano alerta(teste2, 'descricao'); //LoremIpsum
  • 22. FunçõescomoObjetos functiongerarID(){ gerarID.semente++; return gerarID.semente; } gerarID.semente=0; gerarID(); //1 gerarID(); //2
  • 24. FunçõesAnônimas varconector=function(conexao) { returnfunction() { alert(conexao); }; } varconectorMySQL=conector('connectmysql'); varconectorSQLite=conector('connectsqlite'); conectorMySQL(); //connectmysql conectorSQLite();//connectsqlite
  • 25. FunçõesAnônimas varexecutaRepeticao=function(repeticao, funcao) { for(var i =0 ; i < repeticao ; i++){ funcao.call(); } } executaRepeticao(2, function(){ alert('teste'); }); //'teste'! 'teste'!
  • 26. Argumentos functionsoma() { var i =0, len =arguments.length, resultado =0; for(; i < len ; i++){ resultado +=arguments[i]; } return resultado; } soma(2); //2 soma(2, 8); //10 soma(1, 2, 4); //7
  • 27. Invocando varconfig= { mensagem: 'Olá de ' }; vardizNome=function(nome){ alert(this.mensagem+ nome); } dizNome('Fulano'); //undefinedFulano dizNome.call(config, 'Fulano'); //Olá de Fulano dizNome.apply(config, ['Fulano']); //Olá de Fulano
  • 28. .call vs .apply varfoo=function(a, b, c) { return a + b + c; } //4 parâmetros, scope + n diversos foo.call(this, 1, 2, 3); //2 parametros, scope + array de diversos foo.apply(this, [1, 2, 3]);
  • 29. Exercícios //1 … varformataReal=formatadorMonetario('R$'), formataDolar=formatadorMonetario('$'); alert(formataReal(2.3)); //R$2.3 alert(formataDolar(2.3)); //$2.3 //2 … var concatenaHifen = concatenador(' - '), concatenaPonto = concatenador('.'); //Javascript-Ninja alert(concatenaHifen('JavaScript', 'Ninja')); //Ext.panel.Panel alert(concatenaPonto('Ext', 'panel', 'Panel'));
  • 30. Exercícios var data1 = { name : 'AAAAA' }, data2 = { name: 'BBBBB' }; functionsetName(data, name){ this.name= name; } data1.setName = data2.setName =setName; data1.setName(data2, 'FFFFFF'); console.log(data1.name); console.log(data2.name); setName.call(data2, data1, 'GGGGG'); console.log(data1.name); console.log(data2.name); data2.setName.apply(data1, [data2, 'LLLLL']); console.log(data1.name); console.log(data2.name);
  • 31. FunçõescomoConstrutores functionpessoa(){ } pessoa(); Aparentementeumafunçãocomum. Um simples exemplo de programaçãointerpretada.
  • 32. FunçõescomoConstrutores functionPessoa(){ } var fulano =newPessoa(); Podeserconsiderado um construtor, apenasadicionandonew
  • 33. Atributos functionPessoa(nome){ this.nome=nome; } var fulano =newPessoa("Fulano"); alert(fulano.nome); //Fulano
  • 34. Prototype functionPessoa(nome){ this.nome=nome; } Pessoa.prototype= { dizerOla: function(){ alert('Olá de '+this.nome); } }; var fulano =newPessoa("Fulano"); fulano.dizerOla(); Prototype podeserconsiderado o corpo da classe. Aondesãoassociadosmétodos e atributos.
  • 35. Prototype functionPessoa(nome){ this.nome=nome; } var fulano =newPessoa("Fulano"); alert(fulano.dizerOla); //undefined Pessoa.prototype.dizerOla=function(){ alert('Olá de '+this.nome); }; alert(fulano.dizerOla); //function fulano.dizerOla(); //Olá de Fulano Alterar o protótipo de umaclassetêmefeitotambémeminstânciaspreviamentecriadas.
  • 36. Herança //retorna um objeto com todos métodos de pessoa newPessoa(); //cria nova classe pirada varPirata=function(){}; //herda os métodos de pessoa Pirata.prototype=newPessoa(); //teste var jack =newPirata("Jack"); jack.dizerOla(); //Olá de Jack
  • 37. Exercício varatleta=newAtleta('Fulano'); alert(atleta.getNome()); //Fulano atleta.setNome('Fulano da Silva'); alert(atleta.getNome()); //Fulano da Silva varjogador=newJogadorFutebol('Ciclano'); alert(jogador.getNome()); //Ciclano jogador.marcarGols(); alert(jogador.getGols()); //1 jogador.marcarGols(2); alert(jogador.getGols()); //3