>> Todo ben, polo que hoxe, Vou estar falando
sobre Javascript e como é distinta doutras linguas
que pode ser gustábame PHP.
Así, na última charla sobre Luns, nós falamos un pouco
sobre o que é semellante, o que se familiar entre JavaScript
e PHP ou Python ou Ruby ou C ou outras linguaxes
que xa está familiarizado.
Pero JavaScript realmente ten unha visión realmente orixinal
sobre o modelo de obxecto que fai que tipo de enteiramente diferente
que a maioría das linguas que está indo a tratar con eles.
Así, as funcións son un tipo
de subvalorizado concepto en JavaScript.
Son moito máis poderosos que están noutros idiomas
porque poden in - por unha razón,
son capaces de ser definida como valores.
Entón, aquí temos var x é igual a función
e é unha primeira clase valor que pode ser pasado
en torno a como un argumento.
Entón non ten que declarar a función x
e utilizar só x nese ámbito.
Pode pasar o valor de x en calquera lugar ao longo de, vostede sabe,
como un argumento en outra función
onde podes módulo de exportación David como mencionado no nodo.
Así, a seguinte pregunta é
que é unha función obxecto en JavaScript.
Entón pode realmente definir Propiedades como valores
nunha función e só tratar el como se fose un obxecto.
Entón, cando se traballa con jQuery, xa sabe, ese dólar
e logo, que pasa un selector nel
e invoca-lo como unha función.
Pero, entón, tamén se ter dólar dot AJAX.
E iso non tipo de ter sentido se pensar
dunha función só como algo que pode invocar
ou chame.
Pero JavaScript permite que definir propiedades en funcións
propiedades como estáticos con só x someProp dot
como indiquei aí.
O seguinte punto que estamos vai entrar un pouco máis
en profundidade é o feito funcións poden ser tratados
como clases en JavaScript.
Polo tanto, non hai o concepto deste novo operador
o que crea unha nova instancia de a función, xunto cunha especie
de como o corpo de clase como que ven xunto con el
e nós estamos indo a ir para el un pouco máis,
el se chama o prototipo.
E é o que hai de marcas JavaScript moi orixinal en comparación
a outros idiomas que están baseados clase,
JavaScript é un prototipo baseado.
E, a continuación, só no o fondo alí,
función pode só ser chamado claramente como estamos afeitos.
Entón, iso non é nada novo.
Outra cousa que é único e
que as matrices son realmente obxectos.
Eles non son como están en PHP
onde acaba de crear unha nova matriz.
Esta é realmente unha abreviatura por dicir nova matriz.
E matriz é en realidade un subclase dun obxecto.
Entón, iso é algo diferente e eu vou
en algo máis dun detalles sobre iso.
E os recursos de depuración
con JavaScript son realmente inigualable, tanto como eu xa vin.
Este é un screenshot do Inspector Chrome
que imos estar a usar para o resto
da presentación de hoxe.
E para chegar a iso, só ir ao arquivo ferramentas de desenvolvemento
e aberto Inspector Chrome ou pode premer
e prema en amosar elemento I creo que está na páxina HTML
ou eu creo que é orde opción J abre iso.
Pero nós falaremos sobre iso e realmente pode definir puntos de interrupción
como está pasando por o código Javascript e clasificar
de avaliar o que o lugar de variables son, cal é o valor
iso é e convértese en xeito máis doado de depurar o código.
E non - iso non é constrangido a código do lado do seu navegador
pero realmente pode realizar unha instancia
deste Inspector Chrome para o seu código ao lado do servizo
o que é moi legal porque pode percorrer liña por liña
como unha proposta ven na súa servidor e ver o que está a suceder
e xogar coas variables na consola por aquí.
Entón, como eu mencionen, JavaScript é unha linguaxe baseada en prototipo
o que significa que existe un conxunto de valores por defecto que son unha especie
de oculto para cada función
o obxecto de punto propiedade prototipo.
Entón, é unha especie de hash só distintos valores estándar
que cando invocar un funcionar coa nova contrasinal,
quen son definidas por estándar como funcións
que están dispoñibles na instancia.
Así que en realidade é realmente eficaz para o -
é unha forma eficiente de a creación de obxectos de memoria sabio
xa que o JavaScript tempo de execución só ten que manter o control
do prototipo do obxecto.
É unha especie de apunta a que
cando cretae un novo instancia dunha clase.
E tamén pode imitar herdanza como é coñecido
en linguaxes baseadas en clases onde ten sorte
de como un agasallo que se estende, esténdese de que se pode imitar
que o JavaScript a través do que se chama
cadea de prototipos.
E veremos exemplos sobre iso.
Polo tanto, se o seu - plugins jQuery en realidade, eles recomendan jQuery
autores de usar dólar dot fn para engadir funcionalidade
á biblioteca jQuery.
E nós estamos indo realmente para ir - Entón, nesa páxina,
temos o dólar - Eu inclúe jQuery.
E se fai dólar dot na consola
que eu mencionen traendo a través de cambio de mando J
ou só indo a ver, Ferramentas de Desenvolvedor, Desenvolvedor
e indo á pestana Fontes.
[Inaudível Observación]
Ah, claro. Entón, cando comece a para escribir unha variable,
é auto-cuberto para me o que está dispoñible alí.
Entón eu escriba en dólar e eu poida ver Coido que Chrome ten algúns
built-in de dólares, dólar e dólar x.
Entón, agora eu só quero dólar e engada nun punto.
E entón el me amosa todas as propiedades
que están dispoñibles no obxecto jQuery.
Pero se eu fai dólar prototipo punto,
Vexo agora todos os métodos que eu estou acostumado a usar
cando eu teño o dólar, selector e entón eu acorrentar off que con,
vostede sabe, engadir clase ou achegar ou borrar ou calquera dos outros.
Estas son todas realmente no prototipo
que baixo o capó o jQuery crea unha nova instancia de si mesmo
e que tipo de esconde todo estes detalles de ti.
Así, o punto que eu era facendo de volta aquí
coa función, eles en realidade, ocultar prototipo de ti
e só o alias ao dólar dot fn.
Así, a maioría das persoas, en realidade, non entender
que é un prototipo de baixo as Si Aí Hood -
que pode tocar en e engadir funcionalidade adicional
para cada instancia jQuery se desexa.
Así, o operador "new" é realmente unha especie de difícil
de entender ao principio.
Cando chamar unha función co "novo",
é unha totalmente diferente xeito de chamar a función
como se acaba de chamar Lo claramente.
Así, o operador "new" crea o que se chama unha nova instancia
dun obxecto ou unha nova instancia, pode pensar
do obxecto como unha clase.
E cando isto ocorre, o valor deste que se pode familiar
con desde jQuery, que tipo de establecer esta
para o que sexa conveniente no momento.
Eles adoitan define-lo como o nó DOM actual que está a
en como está pasando como cada ou algo parecido.
Eles - Este valor se quere para ser o valor da instancia
que creou o "novo", que inclúe todo
na cadea de prototipos e todos dos métodos que atoparía
como propiedades de prototipo.
Entón, iso depende de como unha función é chamada,
que o valor desta é.
E iso está moi confuso Se vostede é novo para JavaScript.
Pero todas as funcións que se chama ten un - ten a este valor.
Así, mesmo se non ten creado unha nova instancia de algo,
que esta é asumido para ser global.
Ou pode chamar unha función mediante a entrada de chamadas
en que o método é aplicable en JavaScript.
Así mesmo, a función e especificar o que iso debería ser.
Así, pode facelo dinámico, o que é realmente poderoso
pero tamén permite que fai cousas que poden ser enganosas
e confuso para outros desenvolvedores
se non se usar para o traxe.
E jQuery, eu diría fai aínda máis confuso
, Facendo que sexa conveniente e define-lo
ao nodo actual DOM.
Pero a regra simple para recordar que o valor de este é
cando está olhando
nunha chamada de funcional é o que sobrou do punto.
Entón se ten un obxecto
e é algo que punto algo é a función
que está chamando, a continuación, o primeiro valor é o que o valor
iso é.
Entón, aquí está un exemplo de código
onde estou creando un novo obxecto literal
que é só o obxecto creado coas chaves
e eu estou definindo nome para Bob
e entón eu teño un sayName método aquí que -
así dentro deste sayName se eu x dot sayName,
o valor desta sexa igual ax porque a esquerda
do punto é x. Polo tanto, se Eu chamo-x dot sayName,
diría Ola Bob.
E, a continuación, outro exemplo
onde estou, en realidade, atribuíndo x dot sayName, a función
á variable Y, que como mencionei
en JavaScript ti pode atribuír funcións
a variables en calquera momento, é moi flexible que forma,
pero agora cando eu chamo Y, que é perdido no contexto de x.
Polo tanto, este é agora global ou se está en modo estricto,
Eu creo que é nulo ou indefinido.
Pero - Entón, Y non é o que está a esperando aquí se está a buscar
en x e vai para chamar sayName,
estás esperando este nome se quere que sexa Bob.
Pero se tirou-lo o obxecto e chamou-lle
por si só, este é agora global.
E iso é o que eu estaba mencionando cando ve dólar dot tanto,
moitas veces non pensa en o que está realmente a suceder.
Pero jQuery tipo de ten o seu propia linguaxe específica de dominio
para tratar con isto e non é o que está acostumado
no JavaScript.
E eu apuntar isto por que é realmente importante
para escribir ben estruturado código orientado a obxectos
en JavaScript para realmente ter un bo entendemento e comprensión
de como funciona e como O modelo de obxecto obras
e como o novo operador traballa.
Se non, vai acabar con espaguetes jQuery
onde todo é unha especie de todo o sitio
e só xestionar o DOM.
Se pode, de feito, escribir JavaScript
dunha forma máis estruturada, torna-se moito máis fácil
para traballar, para clasificar de separar as preocupacións
da negociación co actualizar o DOM e xestionar
coa lóxica real e código.
Entón, imos dar un ollo a un algúns exemplos en torno a iso.
Entón, eu teño algúns exemplos aquí.
Polo tanto, este é só un exemplo simple do uso dun obxecto JavaScript
e engadindo algunhas funcións para el e, a continuación, a creación especie
de como unha aplicación en miniatura.
Polo tanto, é moi sinxelo na verdade.
O único que fai é nun primeiro momento, solicita o seu nome.
Entón, eu vou dicir Tim e entón pode cambiar o seu nome para Bob.
E iso é todo isto aplicación fai.
Pero o que me gustaría sinalar fóra é como fai iso.
Entón, eu teño ese xerador de nome obxecto que ten un método de inicio
que pide ao usuario ao seu nome
por só chamando este askForName
que aquí fai o prompt
O nome non foi concedido logo pide de novo
chamando este askForName.
E, a continuación, xa que recibe o nome, chama este nome da actualización.
Polo tanto, este, a continuación, define o nome do usuario na etiqueta h1.
E se o nome non é definido, el xera un erro.
[Inaudível Observación]
Ah, claro. Así, el define o nome do usuario na etiqueta h1
chamando SetDisplayName que define o HTML
na JS recipiente nome e Estou prefixar as miñas HTML
con selectores JS só porque é un bo costume de entrar
en só facer non tan confuso
cando está usando selectores como ID de clases ou
ao estilo e á lóxica
no seu JavaScript aplicacións front-end.
Porque se ten diferentes grupos de persoas que traballan
sobre a base de código e ten un selector de alí
que o deseñador decide de cambiar, porque é -
non parece tan grande, que queren para poñer nunha nova clase e tomar
fóra o seu e está confiando sobre el para fins de JavaScript,
a continuación, o código de quebra.
É bo para prefixar e clasificar
de como espazo de nomes case o Clases relacionadas co JavaScript
ou atributos un prefixo de JS.
Entón, iso é moi simple e se pode ver
en todos estes casos, eu son chamando voltar esta ao final.
Polo tanto, esta é unha boa costume de entrar,
para darlle unha valor de retorno válido.
En askForName eu non son porque iso ten sentido
que tería o nome de volta.
Pero o que permite facer entón
se volver esta actualización nome, está retornando o valor
de que é SetDisplayName retornando o valor deste.
E iso permite que clasifique da cadea como está acostumado
no jQuery, devolvendo o valor desta cada vez.
Iso se refire á obxectos actuais
así que podería chamar iso de momento askForName punto SetDisplayName
e que ía manter o valor de este e permitir-lle
para ter unha cadea de bo alí.
E entón, en - por iso en Neste segundo exemplo.
[Pausa]
Todo ben.
Aceptar. Entón, imos adiante e abrir a consola
e ir ao meu guía Fontes.
Imos aparecer iso en realidade.
Así, no creador Chrome ferramentas que mencionei,
hai esta peza do lado dereito e un -
podes ver este sinal de parada aínda que por defecto, é negra.
Pero cando pasa o rato sobre el, di: "Non deixe o cursor sobre excepcións.
Prema na pausa todas as excepcións. "
E cando fai clic nel de novo, el está azul.
E agora a calqueira hora que hai un erro lanzado
no seu código JavaScript, que vai deixar ao momento e permite que
para avaliar o que está pasando.
Entón - e iso é realmente unha útil concepto está a piques de apuntar.
E entón, se fai clic en de novo, el fica vermello
e esta adoita o que eu mantelo dentro
El só rompe o código cando existe unha excepción
que non foi pego.
Entón, unha morea de veces en jQuery para exemplo, eles tentan capturas
para comprobar se ou non un navegador ten algún tipo de capacidade
e continuar a partir de aí.
Esta é só cando hai un erro
que non foi collo unha trampa intento.
Entón, imos tratar de mostrar un nome que está baleiro.
Entón, podo ver que o código está agora parado
no método UpdateName e podo rato sobre nomes
e ver o que está baleiro en branco.
Non é igual a branco.
Entón, se non citar lanzar un novo erro e agora podo volver atrás
a través da función columna e dicir: "OK,
onde veu iso ", e ver o que o valor do cliente é.
Por iso, ten método askForName,
SetDisplayName inicio e UpdateName.
E este é só un realmente útil xeito, pode ver teñen todo o
variables que están dispoñibles en que o ámbito de aplicación, así
como as variables de peche, entón calquera cousa que está pechado
máis por esta función.
E así podo ver iso - que o valor do cliente é
e que o valor desta é.
Entón, iso porque somos en jQuery coincide
para o elemento DOM actual.
Pero é realmente útil para a depuración do código
para romper en erros coma este.
Outra característica do Inspector Chrome é
que en calquera momento pode clic sobre as diferentes liñas
na liña e vai romper nos lugares
onde establecer puntos de interrupción eles son referidos como.
Entón, se eu premer, o liña queda azul.
Entón deixe-me seguir execución aquí, OK, que rompe.
E agora imos definir o nome para Alicia e prema en enviar.
Entón agora podo ver aínda antes de chegar ao punto
de actualizar todo, é agora parou aquí para que eu poida ver
que o meu nome é Alice esta e entón eu podo seguir -
déixeme volver cargar a páxina.
Todo ben, entón agora que é comezando a principios de novo,
deixou neste liña e podo ver
este nome é actualmente indeterminado.
askForName é que funcione é, de xeito que tamén é frecuentemente útil
se ten funcións que son procedentes de diferentes arquivos
ou lugares diferentes na código, podes ver onde está,
e logo, ir para que, ha destacar lo.
É tan bo ter o costume do uso de ferramentas de depuración
que non son só consolar rexistro punto.
OK, entón imos dar un ollar para un segundo exemplo
que fai máis uso prototipos como eu tiña aludido.
Polo tanto, neste exemplo,
estamos creando un novo función chamada CS
e este é capitalizado de xeito que o estándar de convención
en JavaScript é un función debe ser usado
como un constructor, en oposición
para só unha normal, función, é capitalizar iso.
Entón, eu teño de capital CS e este leva un CourseID variable
e que courseTitle I establecido para este CourseID,
este courseTitle no constructor.
E entón eu tamén definir os alumnos e conferencias como matrices baleiras.
Así, a razón que -
OK, entón o prototipo propiedades foron definidas
aquí abaixo con - a modelo é só un subliñado simple
modelo, un modelo de subliñado sendo unha forma que pode -
semellante aos modelos que David tiña mencionado
no servidor, pode basta escribir unha etiqueta de script
que non é un Javascript guión, pero un texto HTML
eo que eu estou facendo con jQuery é -
non manter estes aberto, si, alí imos nós.
Con jQuery, está quedando a HTML valor dese modelo
e logo, executa-lo través do resaltan bibliotecas de utilidades
modelo de motor.
Así, a documentación por que está aquí abaixo
baixo o modelo de utilidade
pero, basicamente, pode ler un pouco máis sobre el.
Pero el avalía esta cadea e transforma-lo nunha función
que pode, entón, pasar datos en e chamar dinamicamente.
Os próximos dous métodos que eu teño son addStudent e addLecture.
Estes só engadilos á matrices internas que eu xa establecidos
no constructor e entón o método de renderización.
Entón, imos crear a nova instancia do CS chamado 164
que ten este curso número 164 e título.
E, a continuación, CS50 que ten CS50 e introdución ao CS1
e, a continuación, engadir un pouco conferencias aos alumnos
e despois chamar CS50 renderizar.
E se eu executar o código, de xeito Eu estou facendo iso con Eval.
Vostede non o quere usar o Eval, pero son só unha especie
de tomar todas as JavaScript que está aquí
e executa-lo en tempo real.
Ela fai a este template estas novas instancias
da clase CS que teñen as propiedades, de xeito que nós fomos
mediante e feito addLecture e addStudent para cada.
E como mencionei porque eu estou volvendo este,
Podo realmente acorrentar estes chamadas addLecture e addStudent
e el vai funcionar tan ben.
A outra característica en JavaScript que é aínda máis útil
do lado do servidor onde Realmente, en determinado momento
se a súa aplicación queda máis non sei onde está
e é máis difícil de definir estes puntos de interrupción individuais
que eu mencionen no Inspector Chrome é
usar o seu contrasinal depurador.
Entón é só D-E-B-K-G-G-E-R.
E cando se pon un depurador palabra clave no seu código
e ten o - alí imos nós, dous GS.
Cando se pon o depurador palabra clave no seu código
e está executando un depurador
, Como o cromo Inspector aquí
ou Chrome lado do servidor Inspector, el di JavaScript
para deter a execución naquela liña de código e, a continuación, el permite que
para percorrer o resto de execución dos códigos.
Entón, se eu premo executar código aquí, agora é deixar
nesta liña depurador e eu poida vexa ben, aquí está o valor de CS50
e é un curso título, curso de identificación,
el ten hai conferencias, ningún alumno.
E entón eu podo pasar por todo o addLecture,
Podo ver iso está empurrando para estas conferencias,
rato sobre iso, "Ola Mundo".
Podo realmente na consola de facelo de xeito que este se define
para o obxecto actual que está dentro
Esta charla é "Ola Mundo".
E manter Stepping través tanto como eu quero.
Se eu non quere paso
trate dunha chamada de función ' Sei o que está pasando
facer entrar en addLecture, hai ese botón aquí
que di: "Pasa a seguinte chamada de función ", e que eu poida ir
ao punto foron Estou quizais pregunta sobre algo.
Como por exemplo 164 renderizar.
Polo tanto, neste punto, é será procesado.
Podo ver este modelo é o modelo compilado.
Podo ver neste momento eu debe ter dous alumnos
e dúas conferencias.
E despois hai o prototipo cadea que eu estaba me referindo.
Así, a un estándar que vén xunto con só un obxecto
en JavaScript, en xeral,
ven con dúas cordas valor do constructor.
E, a continuación, os que Eu engade en min mesmo
coa addLecture, addStudent e logo, as propiedades
que son exclusivas para este instancia da clase
como foi invocado coa nova contrasinal.
Entón, imos facer só unha máis exemplo nesta
e despois imos pasar para algúns as cousas máis interesantes
do lado do servidor.
Entón imos adiante e abrir Neste último exemplo, o que é -
imos ver, onde está o código?
Eu non sei onde iso saíu.
OK, así, só podería saltar sobre este código, a continuación, en realidade -
Oh espera, eu creo que eu perdín a folla de estilo para o código.
OK, entón imos facer esta un pouco maior.
Neste exemplo, eu estou mostrando un pouco máis sobre a configuración
a cadea de prototipos,
por iso a creación de herdanza co JavaScript.
Polo tanto, neste caso, temos un catálogo que vai
para manter presuntamente varios cursos.
E así ten un catálogo un métodos addCourse.
Entón, el verifica se o curso que é pasado é unha instancia
, Claro, como invocado coa nova contrasinal.
Entón, se tentar enviar
en algo distinto, vai berrar con vostede.
O método render o que vai facer cada un dos cursos
compilando o seu modelo a continuación.
E nós temos o curso que o acceso
neste caso a base para a clase cursos de departamento individuais.
E en vez de definir cada
do punto claro método prototipo dot
ou propiedade mediante a estender auxiliar na biblioteca subliñado
clasificar de chamada ampliar este prototipo, con todos
destas propiedades, que se útil, un pouco máis fácil de ler.
E entón aquí facendo o que se coñece como a creación
a cadea de prototipos.
Polo tanto, este é realmente un pouco complicado para a xente en primeiro lugar
e mesmo aínda tendo feito isto por algún tempo, é unha especie de difícil
de romper a cabeza ao redor.
Pero non deixes que te asustar.
Entón, eu son a creación dun novo -
unha clase enteiramente nova obxecto aquí, CS.
E o constructor,
Estou dicindo que está claro Aplicar esta argumentos.
Entón argumentos é unha especial valor que eu creo que podería chamalo
en JavaScript, o contrasinal que ten todo
do todo o que é repassada é argumentos
esta función están dispoñibles cos argumentos chamar,
coa palabra clave argumentos.
Entón, como eu estou chamando con curso dot aplicar,
este é o contexto actual que CS está a ser chamado.
Entón, cando invocala lo co novo é un - é un valor de CS.
E eu digo chamar este Claro método aquí.
Oh, desculpe - chamar este método claro aquí
pero establecer o valor desta ser calquera que sexa o valor
iso é ben aquí.
Polo tanto, o seu contrasinal permite aplicar vostede especie de cambiar o estado
deste que é como jQuery se permite para clasificar de chave
esta en ti como está pasando
e facer elementos DOM en vez do obxecto jQuery.
Entón agora eu estou indo a definir unha función temporal
que vai coller a prototipo do curso.
E tipo de define-lo co seu prototipo
e logo, establecer o prototipo sobre a función de obxecto CS
a unha nova instancia do que iso.
Entón, basicamente eu son dicindo en vez -
se eu aquí fixen CS dot prototipo é igual a novo curso.
Logo sería chamando todo
nesta función de constructor,
o que eu non faría necesariamente quixese.
Entón todo o que eu estou facendo é tipo de creación de case
como unha función de substituto que terá o prototipo Cursos
sobre el e tipo de imitar o prototipo -
o curso, pero sen facer todo o constructor
e establecer que para o prototipo.
E entón eu son só engadindo así o departamento
neste caso é Ordenador Ciencia para o obxecto CS.
E entón eu teño unha especie de versión ponte de facelo.
El non funciona no IE9.
Entón é por iso que eu quería para mostrar como unha especie de -
o que iso está facendo baixo o capó.
Pero pode configurar-lo -Se do mesmo xeito
onde Econ igual función curso aplicar eses argumentos
e despois dicir prototipo Econ dot coincide CreateCourse obxecto dot
prototipo punto.
Polo tanto, é crea un novo obxecto que é só o prototipo
para o curso e, a continuación, establecer o departamento de alí.
Entón agora imos só definir unha depurador aquí e prema en Executar.
Alí imos nós.
Entón CS164 podemos ver a cadea de prototipos temos o
propiedades que foron define no constructor.
Así, os valores destes que foron creados e logo na cadea de prototipos
para o obxecto CS tiña departamento de Ciencia da Computación definido.
E logo no subxacente cadea de prototipos,
temos entón todo o métodos e propiedades
que son exclusivos para o obxecto do curso.
E entón temos os obxectos de base.
Entón, este tipo de unha rápida exemplo da cadea de prototipos.
E como podes ver aquí, hai son dous valores por departamento.
Polo tanto, non hai departamento de ciencia da computación
e logo, departamento non últimos que eu dixen
como o valor predeterminado aquí.
Así, a cadea de prototipos é realmente só un illadamente
lista de ligazóns.
E a medida que trata de atopar un inmoble,
que vai comezar a valor do nivel superior.
Entón, o que o definido no a función de constructor
e logo, tipo de descender a cadea de prototipos de alí.
¿Como se atopa, entón -
aquí, digo CS50 Departamento de punto,
só pode dicir Ciencia da Computación.
Pero se eu dixer var -
[Pausa]
Pero se eu dixer humanidades é igual a novo curso
e entón eu digo humanidades dot departamento,
Vou ver departamento non listado porque foi o primeiro en -
Podo ollar para o prototipo cadea aquí en realidade.
Por iso, foi primeiro para o curso obxecto e viu que non hai nada
na cadea de prototipos en este nivel para o departamento de
ou para os valores de departamento así logo salta ao seguinte nivel,
o curso e aparencia encamiñar alí e atopa.
Por iso, só unha especie de como descende de arriba a abaixo
e que é unha especie de algo que é único
sobre JavaScript que pode cambiar calquera
destes valores en calquera momento.
Entón, o constructor ou nun método individual no obxecto
se eu queira establecer esta departamento de algo novo,
ou se eu aínda quero establecer calquera destas funcións
que xa están existir
de algo novo, Eu son libre para facelo.
Entón agora eu teño CS50 dot addLecture, parece que iso.
E se eu queira configuralo para CS50 addLecture só é igual a
a función en branco.
Entón agora podo ver que é só cambiou completamente
que non é capaz para facer outras linguaxes
onde ten unha máis rigorosa clase baseada herdanza
e todo é tipo de configuración.
JavaScript é moi, moi flexible en canto a iso.
OK, imos ir para atrás nos diapositivas.
Así, por exemplo, sempre me gusta dunha función
para ter unha determinada este valor definido para el.
Pode chamar a función de punto de conexión
e establecer o que o valor iso debe ser.
Podes pensar niso como -
"Estou intentando pensar nun bo exemplo do mundo real, pero ",
se quere protexer o seu código
contra alguén potencialmente chamalo cun valor
que non estaría presente.
Como por exemplo AJAX callback como exceso ou erro.
Aqueles normalmente non son chamados
cunha boa semántica valor deste.
E vostede é como, "Aceptar, sempre quero que este sexa o valor
do obxecto curso que eu estou a traballar.
Ou a visión que eu teño traballar con no meu código
que representa este Nó DOM, pode definir -
pode vincular a este contexto e logo, cando se chama máis tarde
por jQuery e el non ten un bo valor a iso, só pode ir
ao que limitada con el.
Entón hai chamada de función foron pode especificar o contexto
e indicar calquera variábel número de argumentos.
E despois hai a función aplicar o que pode pasar
no contexto e logo ou unha matriz
ou os argumentos obxectos que Eu mencionar que ve alí.
E os argumentos en calquera función que chama,
pode só escribir a palabra "argumentos"
e el vai ter todo os argumentos.
El ten unha propiedade "lonxitude"
que é como argumentos poden eran realmente pasado para que os métodos de
sempre que o JavaScript pode clasificar de chamada
con números variables de argumentos.
É útil para dicir Se isto tivese un argumento,
siga este camiño de código.
Se tivese dous, pode queren seguir outro camiño.
Permite que teña realmente APIs dinámicos para os seus métodos.
Podes pensar en que, con jQuery
como cando ten dólar punto en ou bind.
E iso medio que fai cousas distintas
para saber se pór un argumento ou dous ou tres
ou inicia-lo cunha función.
Está a usar os argumentos propiedade
e os argumentos lonxitude en moitos casos
ter esa maxia función ocorrer.
As cousas que non pode facer con argumentos é usalo só
por defecto como unha matriz.
Entón pode dicir argumentos tres e configuralo para algo
como podería usar a asignación de matriz.
Podes usar o - moi dos métodos subliñado
tanto para coleccións ou para traballar con matrices,
pode pasar en argumentos e vai entender
que é un argumento obxecto e clasificar
de coidar diso para ti.
Pero se quere usar o argumentos que se pasan
por medio dunha función como unha matriz,
pode usar subliñado dot dous array.
Un dos números de funcións de utilidade
que son construídas en subliñar.