Diferencia entre revisiones de «Usuario:ManuelRomero/JavaScript1»

De WikiEducator
Saltar a: navegación, buscar
(Cambio de contexto en vue)
 
(9 revisiones intermedias por el mismo usuario no mostrado)
Línea 3: Línea 3:
 
|Imagen=javaScript.jpg
 
|Imagen=javaScript.jpg
 
|Subtitulo=Lista de contendio
 
|Subtitulo=Lista de contendio
|Listado=#[[Usuario:ManuelRomero/JavaScript/Inicio|<font size=5>Introducción a la programación</font>]]
+
|Listado=#[[Usuario:ManuelRomero/JavaScript/Inicio|Introducción a la programación]]
#[[Usuario:ManuelRomero/JavaScript/lenguajeJS|<font size=5>Conceptos generales de javaScript.</font>]]
+
#[[Usuario:ManuelRomero/JavaScript/lenguajeJS|Conceptos generales de javaScript.]]
#[[Usuario:ManuelRomero/JavaScript/sintaxis|<font size=5>Sintaxis básica del lenguaje.</font>]]
+
#[[Usuario:ManuelRomero/JavaScript/sintaxis|Sintaxis básica del lenguaje.]]
#[[Usuario:ManuelRomero/JavaScript/programación|<font size=5>Ejemplos de programación</font>]]
+
#[[Usuario:ManuelRomero/JavaScript/programación|Ejemplos de programación]]
#[[Usuario:ManuelRomero/JavaScript/dom|<font size=5>El DOM</font>]]
+
#[[Usuario:ManuelRomero/JavaScript/dom|El DOM]]
 
#[[Usuario:ManuelRomero/JavaScript/canvas|Canvas en html5]]
 
#[[Usuario:ManuelRomero/JavaScript/canvas|Canvas en html5]]
 
#[[Usuario:ManuelRomero/JavaScript/eventos|Eventos]]
 
#[[Usuario:ManuelRomero/JavaScript/eventos|Eventos]]
 
#[[Usuario:ManuelRomero/JavaScript/formularios|Formularios]]
 
#[[Usuario:ManuelRomero/JavaScript/formularios|Formularios]]
 
#[[Usuario:ManuelRomero/JavaScript/jquery|JQuery]]
 
#[[Usuario:ManuelRomero/JavaScript/jquery|JQuery]]
 +
#[[Usuario:ManuelRomero/JavaScript/actualizado|Charla JS 2022]]
 
}}
 
}}
<!--
+
;Librerías de javascript para gráficos
{|style="background-color: #F3E2A9;"
+
https://ourcodeworld.co/articulos/leer/159/top-5-las-mejores-bibliotecas-de-javascript-de-diagramas-gratuitos
[[image:javaScript.jpg|right|100px]]
+
https://ingenieriadesoftware.es/10-librerias-javascript-dibujar-diagramas/
<h1 style="font-size: 200%; font-weight: bolder; border:2;">
+
https://www.youtube.com/watch?v=RqQ1d1qEWlE
{{{Title|Contenido de Curso JavaScript}}}</h1>
+
==Cuestiones para tener en cuenta==
|
+
===Cambio de contexto en vue===
<font size=6 color=red>LISTA DE TEMAS</font>
+
*Usando vue, tengo accesible this en toda la sección.
<hr /><br />
+
*Se puede perder el contexto cuando se intenta accedere a él en un método de  otra función
[[Usuario:ManuelRomero/JavaScript/Inicio|<font size=5>1.- Introducción a la programación</font>]]
+
*Si esa función es  una función flecha el contexto se mantiene.
<br />
+
*Esta es una sección de código donde se puede reproduce esta situación
[[Usuario:ManuelRomero/JavaScript/lenguajeJS|<font size=5>2.- Conceptos generales de javaScript.</font>]]
+
<source lang=javascript>
<br />
+
//ascendente es una variable booleana que me indica cómo quiero ordenar (ascendente o descendente)
[[Usuario:ManuelRomero/JavaScript/sintaxis|<font size=5>3.- Sintaxis básica del lenguaje.</font>]]
+
            // además se usa con una directiva  v-if para mostar un svg (flecha arriba o abajo) en el botón de cada campo
<br />
+
            //campo indica el nombre del campo por el que quiero  ordenar
[[Usuario:ManuelRomero/JavaScript/programación|<font size=5>4.- Ejemplos de programación</font>]]
+
            //Este código funciona bien (con función flecha no pierdo el contexto de this)
<br />
+
            this.ascendente[campo] = !this.ascendente[campo];
[[Usuario:ManuelRomero/JavaScript/dom|<font size=5>5.- El DOM</font>]]
+
            this.filas.data.sort((a, b)=>
<br />
+
                        this.ascendente[campo]?
[[Usuario:ManuelRomero/JavaScript/eventos|<font size=5>6.- Eventos</font>]]
+
                          String(a[campo]).localeCompare(String(b[campo])) :
<br />
+
                          String(b[campo]).localeCompare(String(a[campo]))
[[Usuario:ManuelRomero/JavaScript/formularios|<font size=5>7.- Formularios</font>]]
+
 
<br />
+
</source>
[[Usuario:ManuelRomero/JavaScript/avanzado|<font size=5>8.- Elementos adicionales de JavaScript en las páginas</font>]]
+
*Sin embargo si no uso función flecha no funcionaría
<br />
+
<source lang=javascript>
[[Usuario:ManuelRomero/JavaScript/jquery|<font size=5>9.- JQuery</font>]]
+
            this.filas.data.sort(function (a, b){
|}
+
                if (this.ascendente[campo]===true)
-->
+
                    return  String(a[campo]).localeCompare(String(b[campo]));
 +
                else
 +
                      return  String(b[campo]).localeCompare(String(a[campo]))});
 +
</source>
 +
*Y es por que se pierde el contexto de this dentro del método sort, para conseguir el objetivo, tendría que perservar dicho contexto en otra variable
 +
*Sin embargo si no uso función flecha no funcionaría
 +
<source lang=javascript>
 +
  const self = this;
 +
            this.filas.data.sort(function (a, b){
 +
                if (self.ascendente[campo]===true)
 +
                  return  String(a[campo]).localeCompare(String(b[campo]));
 +
                else
 +
                      return  String(b[campo]).localeCompare(String(a[campo]))});
 +
 
 +
</source>

Última revisión de 01:05 9 jul 2023

JavaScript.jpg

Contenido de JavaScript

Lista de contendio

  1. Introducción a la programación
  2. Conceptos generales de javaScript.
  3. Sintaxis básica del lenguaje.
  4. Ejemplos de programación
  5. El DOM
  6. Canvas en html5
  7. Eventos
  8. Formularios
  9. JQuery
  10. Charla JS 2022

Librerías de javascript para gráficos
https://ourcodeworld.co/articulos/leer/159/top-5-las-mejores-bibliotecas-de-javascript-de-diagramas-gratuitos
https://ingenieriadesoftware.es/10-librerias-javascript-dibujar-diagramas/

https://www.youtube.com/watch?v=RqQ1d1qEWlE

Cuestiones para tener en cuenta

Cambio de contexto en vue

  • Usando vue, tengo accesible this en toda la sección.
  • Se puede perder el contexto cuando se intenta accedere a él en un método de otra función
  • Si esa función es una función flecha el contexto se mantiene.
  • Esta es una sección de código donde se puede reproduce esta situación
//ascendente es una variable booleana que me indica cómo quiero ordenar (ascendente o descendente)
            // además se usa con una directiva  v-if para mostar un svg (flecha arriba o abajo) en el botón de cada campo
            //campo indica el nombre del campo por el que quiero  ordenar
            //Este código funciona bien (con función flecha no pierdo el contexto de this)
             this.ascendente[campo] = !this.ascendente[campo];
             this.filas.data.sort((a, b)=>
                         this.ascendente[campo]?
                          String(a[campo]).localeCompare(String(b[campo])) :
                          String(b[campo]).localeCompare(String(a[campo]))
  • Sin embargo si no uso función flecha no funcionaría
            this.filas.data.sort(function (a, b){
                if (this.ascendente[campo]===true)
                    return  String(a[campo]).localeCompare(String(b[campo]));
                else
                      return  String(b[campo]).localeCompare(String(a[campo]))});
  • Y es por que se pierde el contexto de this dentro del método sort, para conseguir el objetivo, tendría que perservar dicho contexto en otra variable
  • Sin embargo si no uso función flecha no funcionaría
  const self = this;
            this.filas.data.sort(function (a, b){
                if (self.ascendente[campo]===true)
                   return  String(a[campo]).localeCompare(String(b[campo]));
                else
                      return  String(b[campo]).localeCompare(String(a[campo]))});