Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:programacion_avanzada_javascript:notacion_objetos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:cursos:programacion_avanzada_javascript:notacion_objetos [2024/10/16 12:59] – [DEMO: Novedades en notación de objetos] tempwininformatica:programacion:cursos:programacion_avanzada_javascript:notacion_objetos [2024/10/30 13:01] (actual) – [Propiedades con nombre dinámico] tempwin
Línea 124: Línea 124:
 En el caso del uso de funciones constructoras, el tema es un poco confuso **porque si ''Foo'' es una función constructora entonces ''Foo.prototype'' puede asignarse a cualquier objeto en cualquier momento**. Y recuerda que ''Foo.prototype'' es el prototipo de todos los objetos creados mediante la función constructora ''Foo''. Pero si sustituyes ''Foo.prototype'' por otro objeto, este cambio solo afecta a los nuevos objetos que crees con ''new Foo'', no con los ya creados: En el caso del uso de funciones constructoras, el tema es un poco confuso **porque si ''Foo'' es una función constructora entonces ''Foo.prototype'' puede asignarse a cualquier objeto en cualquier momento**. Y recuerda que ''Foo.prototype'' es el prototipo de todos los objetos creados mediante la función constructora ''Foo''. Pero si sustituyes ''Foo.prototype'' por otro objeto, este cambio solo afecta a los nuevos objetos que crees con ''new Foo'', no con los ya creados:
  
-<WRAP center round todo 60%> +{{ :informatica:programacion:cursos:programacion_avanzada_javascript:14-cambio-foo-prototype.png |}}
-Cambio de Foo.prototype +
-</WRAP>+
  
 En la imagen anterior el valor de ''f1.name'' es ''undefined'' porque ''f1'' tiene el valor inicial de ''Foo.prototype'' que no define la propiedad ''name''. Por su parte ''f2.name'' tiene valor porque ''f2'' está creado después de que hayamos cambiado ''Foo.prototype'' por otro objeto que sí define la propiedad ''name''. En la imagen anterior el valor de ''f1.name'' es ''undefined'' porque ''f1'' tiene el valor inicial de ''Foo.prototype'' que no define la propiedad ''name''. Por su parte ''f2.name'' tiene valor porque ''f2'' está creado después de que hayamos cambiado ''Foo.prototype'' por otro objeto que sí define la propiedad ''name''.
Línea 285: Línea 283:
 Se puede ver que ''obj.answer'' es ''42'' porque el objeto ''a'' es el prototipo del objeto ''obj''. Para conseguir el mismo efecto en ECMAScript 5 debíamos crear el objeto ''obj'' usando ''Object.create''. Se puede ver que ''obj.answer'' es ''42'' porque el objeto ''a'' es el prototipo del objeto ''obj''. Para conseguir el mismo efecto en ECMAScript 5 debíamos crear el objeto ''obj'' usando ''Object.create''.
  
-<WRAP center round todo 60%> +{{ :informatica:programacion:cursos:programacion_avanzada_javascript:14-usando-proto-notacion-objeto.png |}}
-Usando __proto__ en notación de objeto. +
-</WRAP>+
 ===== Propiedades con nombre dinámico ===== ===== Propiedades con nombre dinámico =====
  
Línea 299: Línea 295:
 Una vez se ha creado esa propiedad podemos acceder a ella con la notación de punto o de array, siendo ambas equivalentes: Una vez se ha creado esa propiedad podemos acceder a ella con la notación de punto o de array, siendo ambas equivalentes:
  
-<WRAP center round todo 60%> +{{ :informatica:programacion:cursos:programacion_avanzada_javascript:14-propiedades-dinamicas.png |}}
-Propiedades dinámicas +
-</WRAP>+
  
  
Línea 388: Línea 382:
 ===== DEMO: Novedades en notación de objetos ===== ===== DEMO: Novedades en notación de objetos =====
  
-Repaso de novedades de **ECMAScript 6** en notación de objetos.+Repaso de las 4 novedades importantes de **ECMAScript 6** en notación de objetos.
  
-Posibilidad de especificar el prototipo del objeto en notación del objeto a la vez que declaramos el objeto:+Posibilidad de **especificar el prototipo** del objeto en notación del objeto a la vez que declaramos el objeto:
  
 <code javascript> <code javascript>
Línea 405: Línea 399:
 Antes no se podía hacer, era necesario el uso de ''Object.create'' para obtener el mismo efecto. Antes no se podía hacer, era necesario el uso de ''Object.create'' para obtener el mismo efecto.
  
-Otra de las novedades son las propiedades con nombre dinámico:+Otra de las novedades son las **propiedades con nombre dinámico**:
  
 <code javascript> <code javascript>
Línea 429: Línea 423:
 Pero no podíamos hacerlo en la declaración de un objeto. Pero no podíamos hacerlo en la declaración de un objeto.
  
-Otra novedad más es una sintaxis simplificada para declarar funciones. +Otra novedad más es una **sintaxis simplificada para declarar funciones**
  
 <code javascript> <code javascript>
informatica/programacion/cursos/programacion_avanzada_javascript/notacion_objetos.1729076392.txt.gz · Última modificación: por tempwin