2009-02-11 9 views
27

En unas semanas, tendré la oportunidad de presentar a mis compañeros de trabajo a JavaScript. Los proyectos anteriores aquí han utilizado principalmente Java y C++. ¿Cuáles son los aspectos más importantes o extraños de JavaScript que necesito explicar? Tengo una lista corta de cosas grandes que ya he identificado:Enseñando JavaScript a los programadores de Java

  • hashes/diccionarios como objetos
  • herencia de prototipos
  • cierres
  • Binding

También voy a tire desde A re-introduction to JavaScript.

¿Qué me he perdido? Estoy buscando cualquier cosa, desde grandes rasgos de lenguaje hasta pequeños errores.

Respuesta

13

Comprobar todas las sesiones de Doug Crockford en YUI Theater. Se llaman "El lenguaje de programación Javascript", "Javascript, las partes buenas", "DOM, una API inconviniente" y "Javascript avanzado". Puede servirle como fuente al redactar el plan de estudios y mostrar algo de eso puede quitarle el prejuicio del "lenguaje de Mickey Mouse" que los programadores de Java tendrán naturalmente.

Puede descargar todas estas sesiones.

+0

Ah, excelente. Esperaba encontrar algo así como eso. ¡Gracias! –

+0

Emitir a todos los desarrolladores con un poco de sal antes de sentarse ... – annakata

+0

:) Bueno, él puede ser muy asertivo en lo que hace buen diseño y cuáles son los defectos, pero realmente me gusta su descripción. –

-1

Enseñar DOM y HTML es mejor. Esto forma una buena base para Javascript.

7

Primera Gotcha asegurarse de que saben de Java = JavaScript;!)

+11

Una analogía común es que Java y JavaScript tienen casi tanto en común como el automóvil y la alfombra. – Kibbee

+0

Estoy considerando usar la frase "JavaScript no es Java Script". –

2

La sintaxis literal de javascript, como se usa en JSON también es una característica importante. No es difícil, pero sigue siendo importante.

6

JavaScript is highly dynamic, que es difícil de entender para la gente de habla estática:

dinámico

dinámica escribir

Al igual que en la mayoría de los lenguajes de script, los tipos se asocian con valores, no variables . Por ejemplo, una variable x podría vincularse a un número, luego rebotar a una cadena. JavaScript admite varias formas de probar el tipo de un objeto, incluida la tipificación de pato.

objetos como matrices asociativas

JavaScript es casi enteramente-basada en objetos. Los objetos son matrices asociativas, aumentadas con prototipos (ver abajo). Los nombres de propiedad de objeto son claves de matriz asociativa: obj.x = 10 y obj ["x"] = 10 son equivalentes, la notación de punto es simplemente azúcar sintáctica. Las propiedades y sus valores se pueden agregar, cambiar o eliminar en tiempo de ejecución. Las propiedades de un objeto también se pueden enumerar mediante un ciclo for ... in.

+0

No había pensado en verificar Wikipedia ... parece bastante completo. Gracias. –

8

Una pregunta que espero que valga la pena mencionar explícitamente es la diferencia del alcance. Por ejemplo, básicamente fui de Java a Javascript y me llevó años ver por qué un código como el siguiente no funcionaba como se esperaba (es decir,cada botón de alerta "botón 9"):

function myFn() { 
    ... 
    for (var i = 0; i < 10; i++) { 
     elems[i].onClick = function() { alert ("Button " + i); }; 
    } 
}

Incluso cuando se lee la explicación y puede seguirlo, todavía toma un tiempo antes de que pueda código instintivamente punto que está haciendo este error.

+0

Parece que su muestra de código fue cortada. –

+0

¡Ah, sí, esos less-thans me atrapan mucho! Corrigiéndolo ahora, gracias. –

+1

Creo que cada botón alertará "Botón 10" y no "Botón 9" como se indica? Buena respuesta, no obstante. – WebSeed

4

De hecho, me encontré este really excellent link mapeo conceptos OO en JS para un C++ dev el otro día, que debería ser apropiado en este caso, porque una vez que llegue más allá de las variantes de sintaxis, la pregunta es "¿cómo se hace X?"

¡Oh, funciones de primera clase!

+0

Eso podría ser un enfoque que valga la pena. Tendré que pensarlo un poco. –

4

Si falla la memoria, mis primeros saltos mentales de JavaScript fueron:

1 - está en el código HTML, pero está haciendo el código HTML. Averiguar cómo organizarlo para la cordura y ponerlo en el lugar correcto para hacer lo correcto fue clave.

2 - el servidor lo entrega pero se ejecuta en el cliente. El hecho de que el código se esté ejecutando dentro de un navegador, en una ubicación que no puede acceder directamente a las partes internas del servidor, se acostumbra un poco.

3 - cuándo usarlo. Hay muchos puntos en los que se puede usar JSP (u otro mecanismo de generación de páginas dinámicas del lado del servidor) o JavaScript. Es importante tener una idea de cuándo es la herramienta adecuada para el trabajo. No es inusual ver nuevos desarrolladores de JavaScript hacer todo en JavaScript. Ahora que tienen un martillo, todo el mundo se ha convertido en clavos.

depuración - Sé que hay herramientas mejores y mejores, pero darse cuenta de que es necesario volver a probar cada navegador compatible y cómo depurar el código del navegador en cada navegador es una gran cosa que los libros nunca parecían enseñar muy bien.

+0

En 4: muéstreles firebug, es lo más cercano a un IDE que se obtiene :) – annakata

+0

¡Oh, sí! No tengo código JavaScript en este momento, pero estoy escuchando excelentes críticas del equipo en Firebug. 1,000,000X mejor que la depuración de IE 4.0/5.0/6.0! – bethlakshmi

+0

Todos los puntos buenos, gracias. :) –

2

Definitivamente va a querer pasar un tiempo explicando que no existen las clases en Javascript y las diferencias entre la herencia basada en prototipos y la herencia basada en clases.

Si está hablando con un grupo de programadores de Java/C++, podría ver que este es un punto de fricción.

4

Diles a todos que obtengan copias de Javascript: The Definitive Guide.

Soy un programador profesional de C++ que tuvo que aprender Javascript hace un par de años, y este libro fue absolutamente invaluable en términos de aprender el idioma. También tiene una gran referencia para algunos de los objetos nativos de Javascript, como String y Number.

1

También enséñeles sobre bibliotecas, como this obvious example. Para muchos casos, declarativo> imperativo al manipular el DOM. También es tan lindo.

Cuestiones relacionadas