JavascriptBasics<br />Ricardo Cavalcanti<br />kvalcanti@gmail.com<br />
Algumas Ferramentas<br />“Firebug integrates with Firefox to put a wealth of web development tools at your fingertips whil...
O que é Javascript<br />Uma linguagem de script (leve)<br />Normalmente escrita direto em páginas HTML<br />Interpretada<b...
Javascript é bem mais que validação<br />A linguagem do browser<br />Todas as aplicações web usam!<br />
Informações iniciais<br />Case Sensitive<br />Monothread<br />
Tipos Primitivos<br />
Tipos Primitivos<br />5 tipos primitivos<br />number<br />string<br />boolean<br />null<br />undefined<br />Todo o resto é...
Tipos Primitivos: number<br />var n1 = 1;<br />typeof n1<br />var n2 = 1.5;<br />typeof n2<br />var n3 = 0100;<br />typeof...
Tipos Primitivos: number<br />var n5 = 1e1;<br />typeof n5<br />n5		 	 	<br />var n6 = 2e+3;<br />typeof n6<br />n6	 	 	<b...
Tipos Primitivos: number<br />var n8 = Infinity;<br />typeof n8<br />n8<br />var n9 = 1e309;<br />typeof n9<br />n9<br />v...
Tipos Primitivos: number<br />var n12 = NaN;<br />typeof n12<br />n12<br />var n13 = 10 * "string"<br />typeof n13<br />n1...
Tipos Primitivos: string<br />var s1 = "some string";<br />typeof s1<br />var s2 = 'a';<br />typeof s2<br />var s3 = "10";...
Tipos Primitivos: string<br />var s41 = "one";<br />var s42 = "two"<br />var s43 = s41 + s42;<br />s43<br />var s51 = "10"...
Tipos Primitivos: string<br />var s6 = "1";<br />typeof s6<br />++s6<br />typeof s6<br />var s7 = "some string 1";<br />va...
Tipos Primitivos: boolean<br />var b1 = false;<br />typeof b1<br />var b2 = "some string";<br />var b21 = !b2;<br />var b2...
Tipos Primitivos: boolean<br />Tudo é true em javascript, exceto seis valores:<br />var b31 = "";<br />var b32 = null;<br ...
Tipos Primitivos: boolean<br />Alguns operadores de comparação<br />!=<br />Diferente:true se os operandos não forem iguai...
Tipos Primitivos: boolean<br />var b4 = 2!="2";<br />var b41 = 2=="2";<br />var b42 = 2!=="2";<br />var b43 = 2==="2";<br ...
Tipos Primitivos: null<br />var nl1 = null;<br />typeof nl1<br />nl1<br />var nl2 = 1 + null;<br />nl2<br />var nl3 = 1*nu...
Tipos Primitivos: undefined<br />var u1 = {}; <br />typeof u1.campoinexistente<br />u1. campoinexistente<br />var u2 = 1 +...
Arrays<br />var a = [1,2,3];<br />typeof a<br />a<br />a[0]<br />a[5]<br />a[5] = "some string";<br />a<br />delete a[2];<...
Arrays<br />var a2 = [[1,2,3],<br />["string1","string2",3]];<br />a2[0]<br />a2[1]<br />var a3 = "one";<br />typeof a3<br...
Funções<br />
Funções<br />Funções são, talvez a coisa mais importante em Javascript<br />function sum(a,b) {<br />	 return a + b;<br />...
Funções: parâmetros<br />Os parâmetros não passados são undefined<br />Parâmetros a mais também podem ser passados<br />fu...
Funções: parâmetros<br />argumentsé o array de parâmetros que a função recebe<br />function sumAll() {<br />var result = 0...
Funções: notação literal<br />Funções são como uma variável qualquer.<br />var func3 = function(a,b) {<br />           ret...
Funções: construtor padrão<br />var func6 = new Function("a,b","returna+b;");<br />func6(2,2) >> 4<br />Não use! Tambémevi...
Funções: callbacks<br />function info(){<br />	 alert("funcao info“);<br />}<br />function execute(func) {<br />func();<br...
Funções: funções anônimas<br />Funções anônimas podem ser passadas como parâmetro<br />E também podem ser definidas para e...
Funções: innerfunctions<br />Mantêm o global namespace limpo<br />function funcTop() {<br />var a = function() {<br />		al...
Funções: escopo<br />Variáveis NÃO são definidas no escopo do bloco, e sim no ESCOPO DA FUNÇÃO.<br />function func() {<br ...
Funções: escopo<br />var r5 = "global";<br />function func1() {<br />alert(r5);<br />	 var r5 = "local";<br />alert(r5);<b...
Funções: escopo léxico<br />Funções tem escopo léxico: elas criam seu ambiente (escopo) quando são definidas, não quando s...
Funções: escopo léxico<br />var a;<br />//..<br />function F() {<br />	 var b;<br />	 //..<br />function N() {<br />		 var...
JS Objects<br />String, Date, RegExp, Math<br />
JS Objects<br />Já existem alguns objetos definidos<br />Array<br />Boolean<br />Date<br />Math<br />Number<br />String<br...
JS Objects: Array<br />concat()<br />join()<br />pop()<br />push()<br />reverse()<br />…<br />
JS Objects: Date<br />Para instanciar<br />new Date() // current date and time<br />new Date(milliseconds) //milliseconds ...
JS Objects: Math<br />Para tarefas matemáticas<br />round(), max(), min(), random()<br />Algumas constantes<br />Math.E, M...
JS Objects: String<br />charAt()<br />concat()<br />fromCharCode()<br />indexOf()<br />lastIndexOf()<br />match()<br />rep...
JS Objects: regexp<br />Sintaxe<br />var txt=new RegExp(pattern,modifiers);<br />var txt=/pattern/modifiers;<br />Modifica...
JS Objects: global<br />Define algumas constantes<br />NaN e Infinity<br />Algumas funções auxiliares<br />escape(), unesc...
Objects<br />
Objects<br />Objetos representam arrays associativos (hashes)<br />Um objeto é um container de propriedades<br />Não têm c...
Objetos: arrays associativos<br />varobj = {<br />	 prop:1,<br />	 prop2:"string",<br />	 "unusual-prop":"value",<br />	 '...
Objects: Literais<br />Propriedades podem ser qualquer valor, exceto undefined<br />O nome de uma propriedade pode ser qua...
Objects: “namespaces”<br />Boa prática para evitar conflitos<br />var MYAPP = {};<br />MYAPP.person = { <br />     "first-...
Objects: acesso<br />[],  como um array<br />person["first-name"]<br />Usando dot-notation<br />flight.departure.city<br /...
Objects: Atualização<br />varobj = {<br />	 prop:1,<br />	 prop2:"string",<br />	 "unusual-prop":"value",<br />	 'WTF?$#!@...
Objects: referência<br />Objetos sempre são passados por referencia<br />var obj1 = {<br />	 a:"val-a"<br />};<br />var ob...
Objects: Funções<br />var dog = {<br />name: "Bobik",<br />talk: function() {<br />return "Woof, woof!";<br />	 },<br />sa...
Objects: Construtor<br />functionCat(/*String*/ name) {<br />this.name = name;<br />this.talk = function() {<br />return "...
Objects: Construtor<br />function Cat(/*String*/ name) {<br />	 this.name = name;<br />this.talk = function() {<br />		 //...
Objects: Construtor<br />Quando um objeto é criado, a propriedade constructoré definida<br />var cat = newCat("Barsik");<b...
Objects: call e apply<br />Todo objeto tem dois métodos: call() e apply()<br />var cat = newCat("Barsik");<br />//..<br />...
Objects: instanceof<br />Instanceof testa se o objeto foi criado com um constutor específico<br />var cat = newCat("Barsik...
Javascript basics
Upcoming SlideShare
Loading in...5
×

Javascript basics

1,910

Published on

Aula 1 do minicurso oferecido no IX SEX, na Poli, UPE.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,910
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
65
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Javascript basics

  1. 1. JavascriptBasics<br />Ricardo Cavalcanti<br />kvalcanti@gmail.com<br />
  2. 2. Algumas Ferramentas<br />“Firebug integrates with Firefox to put a wealth of web development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page!”<br />http://getfirebug.com<br />
  3. 3. O que é Javascript<br />Uma linguagem de script (leve)<br />Normalmente escrita direto em páginas HTML<br />Interpretada<br />Desenvolvida para adicionar interatividade em páginas HTML<br />Validação, comportamento<br />Grátis, livre de licensa<br />
  4. 4. Javascript é bem mais que validação<br />A linguagem do browser<br />Todas as aplicações web usam!<br />
  5. 5. Informações iniciais<br />Case Sensitive<br />Monothread<br />
  6. 6. Tipos Primitivos<br />
  7. 7. Tipos Primitivos<br />5 tipos primitivos<br />number<br />string<br />boolean<br />null<br />undefined<br />Todo o resto é object<br />
  8. 8. Tipos Primitivos: number<br />var n1 = 1;<br />typeof n1<br />var n2 = 1.5;<br />typeof n2<br />var n3 = 0100;<br />typeof n3<br />n3<br />var n4 = 0xFF;<br />typeof n4<br />n4<br />>> “number”<br />>> “number”<br />>> “number”<br />>> 64<br />>> “number”<br />>> 255<br />
  9. 9. Tipos Primitivos: number<br />var n5 = 1e1;<br />typeof n5<br />n5 <br />var n6 = 2e+3;<br />typeof n6<br />n6 <br />var n7 = 2e-3;<br />typeof n7<br />n7<br />>> "number"<br />>> 10 <br />>> "number"<br />>> 2000 <br />>> "number"<br />>> 0.002<br />
  10. 10. Tipos Primitivos: number<br />var n8 = Infinity;<br />typeof n8<br />n8<br />var n9 = 1e309;<br />typeof n9<br />n9<br />var n10 = 6/0;<br />typeof n10<br />n10<br />var n11 = -1*Infinity;<br />typeof n11<br />n11<br />>> "number"<br />>> Infinity<br />>> "number"<br />>> Infinity<br />>> "number"<br />>> Infinity<br />>> "number"<br />>> -Infinity<br />
  11. 11. Tipos Primitivos: number<br />var n12 = NaN;<br />typeof n12<br />n12<br />var n13 = 10 * "string"<br />typeof n13<br />n13<br />var n14 = 1 + 1 + NaN;<br />typeof n14<br />n14<br />>> "number"<br />>> NaN<br />>> "number"<br />>> NaN<br />>> "number"<br />>> NaN<br />
  12. 12. Tipos Primitivos: string<br />var s1 = "some string";<br />typeof s1<br />var s2 = 'a';<br />typeof s2<br />var s3 = "10";<br />typeof s3<br />>> "string"<br />>> "string"<br />>> "string"<br />Tanto faz, aspas duplas ou simples.<br />
  13. 13. Tipos Primitivos: string<br />var s41 = "one";<br />var s42 = "two"<br />var s43 = s41 + s42;<br />s43<br />var s51 = "10";<br />typeof s51<br />var s52 = s51 * 5;<br />s52<br />typeof s52<br />>> "onetwo"<br />>> "string" <br />>> 50<br />>> "number<br />
  14. 14. Tipos Primitivos: string<br />var s6 = "1";<br />typeof s6<br />++s6<br />typeof s6<br />var s7 = "some string 1";<br />var s71 = s7 * 1;<br />typeof s7<br />s71<br />typeof s71<br />>> "string"<br />>> 2<br />>> "number"<br />>> "string"<br />>> NaN<br />>> "number"<br />
  15. 15. Tipos Primitivos: boolean<br />var b1 = false;<br />typeof b1<br />var b2 = "some string";<br />var b21 = !b2;<br />var b22 = !!b2;<br />typeof b2<br />b21<br />typeof b21<br />b22<br />typeof b22<br />>> "boolean"<br />>> "string"<br />>> false<br />>> "boolean"<br />>> true<br />>> "boolean"<br />
  16. 16. Tipos Primitivos: boolean<br />Tudo é true em javascript, exceto seis valores:<br />var b31 = "";<br />var b32 = null;<br />var b33 = false;<br />var b34 = NaN;<br />var b35 = undefined;<br />var b36 = 0;<br />If ( !b31 ){<br /> //executa<br />}<br />
  17. 17. Tipos Primitivos: boolean<br />Alguns operadores de comparação<br />!=<br />Diferente:true se os operandos não forem iguais<br />==<br />Comparador de igualdade:true se ambos os operandos forem iguais. Converte para o mesmo tipo antes da comparacao<br />!==<br />Diferente sem conversão de tipo: true se os operandos não forem iguais OU não forem do mesmo tipo<br />===<br />Comparador de igualdade e tipo:true se os operandos forem iguais e do mesmo tipo<br />
  18. 18. Tipos Primitivos: boolean<br />var b4 = 2!="2";<br />var b41 = 2=="2";<br />var b42 = 2!=="2";<br />var b43 = 2==="2";<br />>> false<br />>> true<br />>> true<br />>> false<br />
  19. 19. Tipos Primitivos: null<br />var nl1 = null;<br />typeof nl1<br />nl1<br />var nl2 = 1 + null;<br />nl2<br />var nl3 = 1*null;<br />nl3 <br />>> "object"<br />>> null<br />>> 1<br />>> 0<br />
  20. 20. Tipos Primitivos: undefined<br />var u1 = {}; <br />typeof u1.campoinexistente<br />u1. campoinexistente<br />var u2 = 1 + undefined; <br />u2<br />var u3 = 1 * undefined;<br />u3<br />>> undefined<br />>> undefined <br />>> NaN<br />>> NaN<br />
  21. 21. Arrays<br />var a = [1,2,3];<br />typeof a<br />a<br />a[0]<br />a[5]<br />a[5] = "some string";<br />a<br />delete a[2];<br />a<br />delete a[5];<br />a<br />>> "object"<br />>> [1,2,3]<br />>> 1<br />>> undefined<br />>> [1,2,3, undefined, undefined,"some string"]<br />>> [1,2, undefined, undefined, undefined, "some string"]<br />>> [1,2, undefined, undefined, undefined, undefined]<br />
  22. 22. Arrays<br />var a2 = [[1,2,3],<br />["string1","string2",3]];<br />a2[0]<br />a2[1]<br />var a3 = "one";<br />typeof a3<br />a3[0]<br />typeof a3[0]<br />a3[1]<br />>> [1,2,3]<br />>> ["string1","string2",3]<br />>> "string" <br />>> "o"<br />>> "string"<br />>> "n"<br />
  23. 23. Funções<br />
  24. 24. Funções<br />Funções são, talvez a coisa mais importante em Javascript<br />function sum(a,b) {<br /> return a + b;<br />}<br />var r1 = sum(1,1);<br />>> 2 <br />
  25. 25. Funções: parâmetros<br />Os parâmetros não passados são undefined<br />Parâmetros a mais também podem ser passados<br />function sum(a,b) {<br /> return a + b;<br />}<br />var r2 = sum(1);<br />var r3 = sum(1,2,3,4,5);<br />>> NaN{1 + undefined = NaN}<br />>> 3<br />
  26. 26. Funções: parâmetros<br />argumentsé o array de parâmetros que a função recebe<br />function sumAll() {<br />var result = 0;<br /> for(vari=0,length=arguments.length;i<length;i++){<br /> result+=arguments[i];<br /> }<br /> return result;<br />}<br />var r4 = sumAll(1,2,3,4,5,6,7);<br />r4 >> 28 <br />
  27. 27. Funções: notação literal<br />Funções são como uma variável qualquer.<br />var func3 = function(a,b) {<br /> return a*b;<br /> };<br />var f3 = func3;<br />typeof func3 >> "function"<br />typeof f3 >> "function" <br />func3(2,2) >> 4 <br />f3(3,3) >> 9 <br />
  28. 28. Funções: construtor padrão<br />var func6 = new Function("a,b","returna+b;");<br />func6(2,2) >> 4<br />Não use! Tambémeviteeval()<br />EvitepassarcódigoJavascriptcomouma string<br />eval(“var a = 2");<br />++a >> 3<br />
  29. 29. Funções: callbacks<br />function info(){<br /> alert("funcao info“);<br />}<br />function execute(func) {<br />func();<br />}<br />execute(info);<br />
  30. 30. Funções: funções anônimas<br />Funções anônimas podem ser passadas como parâmetro<br />E também podem ser definidas para executar imediatamente<br />function execute(func) {<br />func();<br />}<br />execute(function() {<br /> alert("hello, anonimo!“);<br />});<br />(function(a,b) {<br />return a-b;<br />})(5,3);<br />>> "hello, anonimo“<br />>>2<br />
  31. 31. Funções: innerfunctions<br />Mantêm o global namespace limpo<br />function funcTop() {<br />var a = function() {<br /> alert("innerFunction: work...");<br /> }<br /> alert("funcTop: work...");<br /> a();<br />}<br />
  32. 32. Funções: escopo<br />Variáveis NÃO são definidas no escopo do bloco, e sim no ESCOPO DA FUNÇÃO.<br />function func() {<br />var a = "local";<br /> if(true) {<br /> a<br />var a2 = "local-if";<br /> a2<br /> }<br /> a<br /> a2<br />}<br />>> "local"<br />>> "local-if"<br />>> "local"<br />>> "local-if"<br />
  33. 33. Funções: escopo<br />var r5 = "global";<br />function func1() {<br />alert(r5);<br /> var r5 = "local";<br />alert(r5);<br />}<br />func1();<br />r5 >> undefined<br />r5 >> "local"<br />var r5 = "global";<br />function func1() {<br /> out(r5);<br />}<br />func1();<br />r5 >> "global"<br />
  34. 34. Funções: escopo léxico<br />Funções tem escopo léxico: elas criam seu ambiente (escopo) quando são definidas, não quando são executadas.<br />function func4() {<br />var v = 1;<br /> return func5();<br />};<br />function func5() {<br /> return v;<br />};<br />func4()<br />>> ReferenceError: v is not defined<br />function func41() {<br />var v = 1;<br /> return (function() {<br /> return v;<br /> })(); <br />};<br />func41();<br />>> 1<br />
  35. 35. Funções: escopo léxico<br />var a;<br />//..<br />function F() {<br /> var b;<br /> //..<br />function N() {<br /> var c;<br /> //..<br /> }<br />}<br />Global<br /><ul><li>a</li></ul>F<br /><ul><li>b</li></ul>N<br /><ul><li>c</li></li></ul><li>Funções: escopo léxico<br />var a;<br />var N;<br />//..<br />function F() {<br /> var b;<br />//..<br /> N = function () {<br /> var c;<br /> //..<br /> }<br />}<br />Global<br /><ul><li>a</li></ul>F<br /><ul><li>b</li></ul>N<br /><ul><li>c</li></ul>Depois, um pouco mais sobre escopo de funções e closures<br />
  36. 36. JS Objects<br />String, Date, RegExp, Math<br />
  37. 37. JS Objects<br />Já existem alguns objetos definidos<br />Array<br />Boolean<br />Date<br />Math<br />Number<br />String<br />RegExp<br />Global<br />
  38. 38. JS Objects: Array<br />concat()<br />join()<br />pop()<br />push()<br />reverse()<br />…<br />
  39. 39. JS Objects: Date<br />Para instanciar<br />new Date() // current date and time<br />new Date(milliseconds) //milliseconds since 1970/01/01<br />new Date(dateString)<br />new Date(year, month, day, hours, minutes, seconds, milliseconds)<br />Podem ser comparadas com < e ><br />Diversosmétodosparamanipulação<br />setFullYear(), getMinutes()...<br />
  40. 40. JS Objects: Math<br />Para tarefas matemáticas<br />round(), max(), min(), random()<br />Algumas constantes<br />Math.E, Math.PI, Math.SQRT2, Math.SQRT1_2, Math.LN2, Math.LN10, Math.LOG2E, Math.LOG10E<br />
  41. 41. JS Objects: String<br />charAt()<br />concat()<br />fromCharCode()<br />indexOf()<br />lastIndexOf()<br />match()<br />replace()<br />search()<br />slice()<br />split()<br />substr()<br />substring()<br />toLowerCase()<br />toUpperCase()<br />
  42. 42. JS Objects: regexp<br />Sintaxe<br />var txt=new RegExp(pattern,modifiers);<br />var txt=/pattern/modifiers;<br />Modificadores<br />i : case-sensitive<br />g: global match, achatodos, nãoapenas a primeira<br />m: multiline<br />Usocomum<br />String.match()<br />varstr="Is this all there is?";<br />var patt1=/is/gi;<br />Is this all there is?<br />
  43. 43. JS Objects: global<br />Define algumas constantes<br />NaN e Infinity<br />Algumas funções auxiliares<br />escape(), unescape()<br />isFinite(), isNaN()<br />parseFloat(), parseInt()<br />
  44. 44. Objects<br />
  45. 45. Objects<br />Objetos representam arrays associativos (hashes)<br />Um objeto é um container de propriedades<br />Não têm classe<br />Mas pode haver herança!<br />Podem ser aumentados a qualquer hora<br />
  46. 46. Objetos: arrays associativos<br />varobj = {<br /> prop:1,<br /> prop2:"string",<br /> "unusual-prop":"value",<br /> 'WTF?$#!@$':{<br /> a:"a-val"<br /> },<br /> array: [1,2,3] <br />};<br />typeofobj >> object<br />obj.prop >> obj["unusual-prop"] >> "value" <br />obj['WTF?$#!@$'].a >> "a-val"<br />obj.array >> [1,2,3]<br />obj["array"] >> [1,2,3]<br />
  47. 47. Objects: Literais<br />Propriedades podem ser qualquer valor, exceto undefined<br />O nome de uma propriedade pode ser qualquer string, inclusive “”<br />var empty_object = {}; <br />var person = { <br /> "first-name": "Jerome", <br /> "last-name": "Howard" <br />};<br />var flight = { <br />airline: "Oceanic", <br />number: 815, <br />departure: { <br /> time: "2004-09-22 14:55", <br /> city: "Sydney" <br /> }, <br />arrival: { <br /> time: "2004-09-23 10:42",<br /> city: "Los Angeles" <br />} <br />};<br />
  48. 48. Objects: “namespaces”<br />Boa prática para evitar conflitos<br />var MYAPP = {};<br />MYAPP.person = { <br /> "first-name": "Joe", <br /> "last-name": "Howard" <br />};<br />
  49. 49. Objects: acesso<br />[], como um array<br />person["first-name"]<br />Usando dot-notation<br />flight.departure.city<br />Propriedades inexistentes >> undefined<br />|| para definir valores default<br /> var status = flight.status || "unknown";<br />Acesso a um undefined lança TypeError<br />flight.equipment // undefined <br />flight.equipment.model // throw "TypeError" <br />
  50. 50. Objects: Atualização<br />varobj = {<br /> prop:1,<br /> prop2:"string",<br /> "unusual-prop":"value",<br /> 'WTF?$#!@$':{<br /> a:"a-val"<br /> },<br /> array: [1,2,3] <br />};<br />obj.prop3 >> undefined<br />obj.prop3 = "value3";<br />obj.prop3 >> "value3"<br />
  51. 51. Objects: referência<br />Objetos sempre são passados por referencia<br />var obj1 = {<br /> a:"val-a"<br />};<br />var obj2 = obj1;<br />obj1.a >> "val-a"<br />obj2.a >> "val-a“<br />obj2.a = "val-a2“;<br />obj1.a >> "val-a2"<br />obj2.a >> "val-a2"<br />var obj3 = {<br /> a:"val-a"<br />};<br />obj1===obj2 >> true<br />obj1===obj3 >> false<br />var a = {}, b = {}, c = {};<br /> //todos diferentes<br />a = b = c = {};<br /> //todos o mesmo objeto vazio<br />
  52. 52. Objects: Funções<br />var dog = {<br />name: "Bobik",<br />talk: function() {<br />return "Woof, woof!";<br /> },<br />sayName: function() {<br />returnthis.name;<br /> }<br />};<br />dog.name >> "Bobik" <br />dog.talk() >> "Woof, woof!"<br />dog.sayName() >> "Bobik"<br />
  53. 53. Objects: Construtor<br />functionCat(/*String*/ name) {<br />this.name = name;<br />this.talk = function() {<br />return "I'm "+this.name+". Mrrr, miaow!";<br /> }<br />}<br />var cat = newCat("Barsik");<br />typeofcat >> object<br />cat.name >> "Barsik"<br />cat.talk() >> "I’mBarsik. Mrrr, miaow!"<br />
  54. 54. Objects: Construtor<br />function Cat(/*String*/ name) {<br /> this.name = name;<br />this.talk = function() {<br /> //...<br /> }<br />}<br />var cat2 = Cat("Barsik");<br />This faz referencia ao objeto global window<br />Chamada sem new<br />typeof cat2 >> undefined<br />cat2.name >> TypeError: cat2 has no properties<br />window.name >> "Barsik"<br />
  55. 55. Objects: Construtor<br />Quando um objeto é criado, a propriedade constructoré definida<br />var cat = newCat("Barsik");<br />var constr = cat.constructor;<br />var cat3 = cat.constructor("Murzik");<br />constr >> functionCat(name) { .... }<br />cat3.talk() >> "I’mMurzik. Mrrr, miaow!"<br />
  56. 56. Objects: call e apply<br />Todo objeto tem dois métodos: call() e apply()<br />var cat = newCat("Barsik");<br />//..<br />var cat4 = {name:"Agatha"};<br />cat.talk.call(cat4/**, param1, p2, ... **/) >> "I’m Agatha. Mrrr, miaow!"<br />cat.talk.apply(cat4/**, [param1, p2, ...] **/) >> "I’m Agatha. Mrrr, miaow!"<br />
  57. 57. Objects: instanceof<br />Instanceof testa se o objeto foi criado com um constutor específico<br />var cat = newCat("Barsik");<br />var o = {};<br />catinstanceofCat >> true<br />catinstanceofObject >> true<br />o instanceofObject >> true<br />o instanceofCat >> false<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×