SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
Top 10 RxJs Operators in Angular
Top 10 RxJs Operators in Angular Top 10 RxJs Operators in Angular
Top 10 RxJs Operators in Angular Jalpesh Vadgama
 
The Power of Composition (NDC Oslo 2020)
The Power of Composition (NDC Oslo 2020)The Power of Composition (NDC Oslo 2020)
The Power of Composition (NDC Oslo 2020)Scott Wlaschin
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency InjectionNir Kaufman
 
Mongoose and MongoDB 101
Mongoose and MongoDB 101Mongoose and MongoDB 101
Mongoose and MongoDB 101Will Button
 
3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVCMohd Manzoor Ahmed
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosArthur Emanuel
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018André Luiz Forchesatto
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosArthur Emanuel
 
Angular 4 The new Http Client Module
Angular 4 The new Http Client ModuleAngular 4 The new Http Client Module
Angular 4 The new Http Client Modulearjun singh
 
PHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object CalisthenicsPHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object CalisthenicsGuilherme Blanco
 

Mais procurados (20)

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Junit
JunitJunit
Junit
 
Top 10 RxJs Operators in Angular
Top 10 RxJs Operators in Angular Top 10 RxJs Operators in Angular
Top 10 RxJs Operators in Angular
 
The Power of Composition (NDC Oslo 2020)
The Power of Composition (NDC Oslo 2020)The Power of Composition (NDC Oslo 2020)
The Power of Composition (NDC Oslo 2020)
 
Historia de java script
Historia de java scriptHistoria de java script
Historia de java script
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency Injection
 
Mongoose and MongoDB 101
Mongoose and MongoDB 101Mongoose and MongoDB 101
Mongoose and MongoDB 101
 
3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Angular 4 The new Http Client Module
Angular 4 The new Http Client ModuleAngular 4 The new Http Client Module
Angular 4 The new Http Client Module
 
Modern JS with ES6
Modern JS with ES6Modern JS with ES6
Modern JS with ES6
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
PHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object CalisthenicsPHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object Calisthenics
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

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
 
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
 
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 - 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
 
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 - 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
 

Último (6)

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
 
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
 
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 - 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
 
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 - 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
 

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