Métodos de Objeto (Versão Vídeo)
-
0:00 - 0:03No último vídeo, nós aprendemos
como fazer um tipo de objeto -
0:03 - 0:06para representar nossos dois
objetos do tipo Winston -
0:06 - 0:09e então os inicializamos
com os construtores. -
0:10 - 0:13Um tipo de objeto não deve apenas
ser associado com propriedades. -
0:14 - 0:16Também pode ser associado
com funcionalidades. -
0:16 - 0:21Pense no mundo e em todos os tipos
objetos que ele contem, como nós, humanos. -
0:21 - 0:22Todos nós possuímos alturas e idades,
-
0:22 - 0:25mas também possuímos
coisas que podemos fazer, -
0:25 - 0:27como dormir, comer e programar.
-
0:27 - 0:31E nós queremos poder associar
essas funções com os tipos de objeto. -
0:31 - 0:35Neste programa, que é o mesmo
que deixamos de lado na última vez, -
0:35 - 0:36nós temos uma função aqui,
-
0:36 - 0:39drawWinston, que podemos chamar
nos dois objetos Winston. -
0:40 - 0:45Não ficaria melhor se pudéssemos
anexar isso ao tipo de objeto Winston? -
0:46 - 0:48Bem, nós podemos, e é fácil de se fazer.
-
0:49 - 0:51Então, embaixo do nosso construtor,
-
0:51 - 0:55escreveremos Winston, com W
maiúsculo, ponto prototype, -
0:55 - 0:57e o prototype, essa é uma palavra nova
-
0:57 - 1:00a qual provavelmente você
ainda não tinha visto antes. -
1:00 - 1:06E o prototype é uma propriedade de
objeto que podemos anexar funções. -
1:06 - 1:09E isso irá significar que todo o objeto,
-
1:09 - 1:13que seja um instância desse,
terá essas funções nele. -
1:13 - 1:16Então nós podemos dizer
ponto prototype e então ponto, -
1:16 - 1:20e depois o nome da função,
então escrevemos draw, -
1:20 - 1:25igual, e então pegamos nosso
código drawWinston -
1:25 - 1:29e podemos colocá-lo aqui
dentro. Tudo bem, -
1:29 - 1:33então o que fizemos foi
anexar uma função draw -
1:33 - 1:35ao nosso protótipo de Winston.
-
1:35 - 1:37E isso significa que poderemos
chamar draw() -
1:37 - 1:40em qualquer objeto do tipo Winston.
-
1:40 - 1:45Muito bem, então poderemos chamar
draw() em winstonTeen ou winstonAdult. -
1:45 - 1:50E quando temos um função desse tipo,
que podemos chamar um objeto, -
1:50 - 1:54nós chamamos de "método", então você
pode me escutar falar "método" agora. -
1:54 - 1:58Então vamos dizer que isso é
"um método de desenhar". Okay. -
1:58 - 2:01Então agora nós iremos
deletar isso, e isso, -
2:01 - 2:05e agora veremos se
podemos chamar draw(). -
2:05 - 2:07winstonTeen.draw()
-
2:07 - 2:10Okay. Temos um erro,
nós tivemos esse erro aqui, -
2:10 - 2:14então ele diz:
"winstObject não está definido" -
2:14 - 2:19Okay. Então antes, nós estávamos passando
esse argumento dentro de drawnWinston, -
2:19 - 2:22o qual possui o objeto Winston,
-
2:22 - 2:24mas agora não estamos
passando mais. -
2:24 - 2:26Hum, então, poderíamos mudar
isso para que passasse -
2:26 - 2:31e, vamos ver, o que passaremos aqui?
Temos que passar winstonTeen. Okay? -
2:31 - 2:34Isso funcionou, mas
também parece muito bobo. -
2:34 - 2:38Eu já estou chamando
draw no próprio objeto. -
2:38 - 2:44Eu não deveria ter que passar o objeto
também. Isso parece redundante. -
2:44 - 2:46E isso é verdade, não
deveríamos ter que fazer isso, -
2:46 - 2:49então vamos deletar isso
aqui e agora vamos pensar. -
2:49 - 2:51Se nós estamos dentro do objeto,
-
2:51 - 2:54o que poderíamos usar para
acessar as propriedades do objeto. -
2:54 - 2:56Bem, você poderia dar uma
olhada no nosso construtor, -
2:56 - 3:01e lembre-se da palavra-chave
especial "this" (este) e pense " ahh " -
3:01 - 3:09"E se trocarmos this, por isto?" [risos]
Então trocamos winstObject por "this" -
3:09 - 3:13Porque agora nós já estamos dentro de
um objeto. Essa função está sendo avaliada -
3:13 - 3:17no objeto, então o "this"
irá se referir ao objeto atual. -
3:17 - 3:20Dessa maneira
podemos dizer "this" -
3:20 - 3:24e teremos acesso a todas as
propriedades deste objeto atual. -
3:24 - 3:27E isso realmente funciona, viu?
Não é legal? -
3:27 - 3:32Então agora podemos
dizer winstonAdult.draw() -
3:32 - 3:36Ta-da! E isso irá acessar as
propriedades do winstonAdult -
3:36 - 3:39porque é o objeto que
está sendo chamado. -
3:39 - 3:42Então isso é o que é realmente
legal sobre esse palavra-chave "this", -
3:42 - 3:45mesmo que seja confuso algumas vezes.
-
3:45 - 3:50Muito bem, isso foi muito divertido,
então vamos adicionar outro método. -
3:50 - 3:52Okay, então, o que mais
o Winston pode fazer? -
3:52 - 3:57Talvez ele irá falar. Então nós
faremos um Winston.prototype.talk, -
3:57 - 4:01assim nós poderemos anexar quantos
métodos nós quisermos ao prototype. -
4:01 - 4:06Então nós iremos dizer "Eu sou Winston!"
-
4:06 - 4:12E depois nós iremos dizer
this.x+20, e this.y+150. -
4:12 - 4:20E então, nada aconteceu, mas isso foi
porque ainda não chamei a função. -
4:20 - 4:25Então, vamos fazer o teen talk,
winstonTeen.talk(). Okay. -
4:25 - 4:30Eu sou Winston, ta-da!
E depois winstonAdult.talk() -
4:30 - 4:33Ta-da! Muito bem,
-
4:33 - 4:35então agora temos esse
tipo de objeto Winston -
4:35 - 4:39que possui propriedades:
apelido, idade, x, y; -
4:39 - 4:42e possui funcionalidades:
comportamentos, métodos; -
4:42 - 4:45que se comportam diferente
dependendo das propriedades -
4:45 - 4:49e podemos criar quantas instâncias
de Winstons nós quisermos -
4:49 - 4:51e chama qualquer desses métodos nele.
-
4:51 - 4:52Bem legal, né?
-
4:52 - 4:54Legendado por [Gabriel Mello Fernandes]
- Title:
- Métodos de Objeto (Versão Vídeo)
- Description:
-
Esta é apenas uma captura de tela da programação interativa do talk-through, preparado para fazer legendas e traduções mais fáceis. É melhor assistir nossos talk-throughs aqui:
https://www.khanacademy.org/cs/programming/
- Video Language:
- English
- Duration:
- 04:54
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Gabriel Fernandes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Gabriel Fernandes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Gabriel Fernandes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Gabriel Fernandes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Gabriel Fernandes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) | ||
Gabriel Fernandes edited Portuguese, Brazilian subtitles for Object Methods (Video Version) |