Contenido del curso
Primeros Pasos
- 5

¡Hola Mundo!
06:13 min - 6

Anatomía de una variable
09:23 min - 7

Tipos de datos: Mutabilidad e inmutabilidad
10:55 min - 8

Paso por valor
11:06 min - 9

Paso por referencia
07:00 min - 10

Creación de strings
11:33 min - 11

Concatenación de strings
08:31 min - 12

Manipulación de strings
12:13 min - 13

Tipo de dato primitivo: number
09:30 min - 14

Conversión a Booleanos
05:08 min - 15

Tipos de datos primitivos: null, undefined, symbol y bigint
07:28 min - 16

Conversión de tipos: Type Casting y Coercion
04:38 min - 17

Conversión de tipos explícita e implícita
12:20 min - 18

Proyecto: Crea un perfil para redes sociales con JavaScript
07:23 min
Funciones y This
- 19

Anatomía de una función
11:39 min - 20

Preguntas a Desarrolladores Senior: ¿Por qué aprender Desarrollo Web?
02:11 min - 21

Funciones vs Métodos
Viendo ahora - 22

Funciones puras e impuras
11:22 min - 23

Identificador this
11:38 min - 24

Métodos bind, call y apply
10:09 min - 25

Funciones flecha y enlace léxico
10:31 min - 26

Implicaciones de duplicar código
03:19 min - 27

Funciones constructoras
10:41 min - 28

10 Tipos de funciones
01:39 min - 29

Objeto window y modo estricto
07:37 min - 30

Tipos de binding
01:11 min - 31

Expresiones vs Sentencias
04:02 min - 32

Proyecto: Crea biografías de personajes con JavaScript
12:51 min
Lógica y ciclos
- 33

Operadores de comparación
06:12 min - 34

Operadores lógicos
04:33 min - 35

Ejecución condicional: if
07:45 min - 36

Proyecto: Adivina el número
09:36 min - 37

Ejecución condicional: ternario
05:24 min - 38

Ejecución condicional: switch
12:08 min - 39

Loop: for
07:31 min - 40

Loop: forEach
03:57 min - 41

Loop: for of
04:26 min - 42

Loop: for in
07:38 min - 43

Loop: while
03:56 min - 44

Loop: do while
03:13 min - 45

Proyecto: Juego adivina la palabra
15:56 min
Fundamentos de arrays y modificación
- 46

Introducción a Arrays
09:09 min - 47

Mutabilidad e inmutabiliad de Arrays
07:56 min - 48

Modificación básica del final con push(), pop()
04:33 min - 49

Ejercicio: Stack de libros
16:03 min - 50

Modificación del principio con shift(), unshift()
10:21 min - 51

Modificación avanzada con splice(), reverse(), sort(), fill()
16:37 min - 52

Proyecto: Juego de cartas
15:37 min - 53

Preguntas a Desarrolladores Senior: Estrategias y métodos de estudio
01:10 min
Iteración de Arrays
- 54

Iteración con map() y forEach()
12:53 min - 55

Filtrado y reducción con filter() y reduce()
11:34 min - 56

Ejercicio: Calificación promedio aprobatoria
05:27 min - 57

Búsqueda de elementos con find() y findIndex()
03:52 min - 58

Ejercicio: Encuentra al ganador de una rifa
11:21 min - 59

Proyecto: Análisis de transacciones
10:55 min - 60

Proyecto: Análisis de transacciones parte 2
08:01 min
Métodos específicos y Operaciones
- 61

Unir y entrelazar con concat(), spread operator y join()
12:05 min - 62

Verificación y evaluación con every() y some()
05:15 min - 63

Métodos de búsqueda con includes(), indexOf() y lastIndexOf()
07:05 min - 64

Ejercicio: Encontrando los índices
11:09 min - 65

Crear copias con slice()
05:28 min - 66

Spread operator: casos de uso
07:11 min
Arrays multidimencionales
Clases y Objetos
- 71

Anatomia de un Objeto
06:48 min - 72

Trabajando con objetos
12:52 min - 73

Función constructora
14:31 min - 74

¿Qué es una clase?
06:17 min - 75

Prototipos y herencias
02:15 min - 76

Herencia en la práctica
15:38 min - 77

Prototipos en la práctica
10:42 min - 78

this en JavaScript
05:36 min - 79

Proyecto: Crea una red social
12:25 min - 80

Proyecto: Crea una red social parte 2
09:00 min
Funciones vs Métodos
Resumen
Las funciones en JavaScript son mucho más que simples bloques de código reutilizable. Aunque un typeof sobre una función devuelve "function", las funciones siguen siendo objetos. Esto significa que comparten capacidades con cualquier otro objeto: tienen propiedades, métodos, un contexto de ejecución y pueden ser invocadas. Comprender esta naturaleza dual es fundamental para escribir código más flexible y profesional.
¿Qué capacidades comparten las funciones con otros objetos?
Las funciones en JavaScript pueden comportarse exactamente como otros objetos. Esto abre un abanico de posibilidades que todo desarrollador debe conocer, especialmente porque son temas frecuentes en entrevistas técnicas.
¿Qué es un callback y cómo se pasa una función como argumento?
Un callback es una función que se pasa como argumento a otra función [0:55]. Este patrón es extremadamente común en programación. Por ejemplo, si tienes una función A y otra función B, puedes pasar A como argumento al invocar B:
javascript function A() { // lógica }
function B(fn) { fn(); }
B(A);
De esta forma, B recibe a A y puede ejecutarla internamente. Este concepto es la base de operaciones asíncronas, manejo de eventos y muchas utilidades del lenguaje.
¿Cómo retornar una función desde otra función?
Otra capacidad poderosa es retornar funciones desde dentro de otras funciones [1:35]. Esto permite crear patrones como closures y fábricas de funciones:
javascript function A() { function B() { // lógica interna } return B; }
Aquí, la función A contiene a B y la retorna. Quien invoque A() recibirá la función B lista para ser ejecutada.
¿Qué diferencia hay entre una declaración de función y una expresión de función?
También es posible asignar funciones a variables [2:12]. Cuando lo hacemos, la función pierde su nombre propio y adopta el de la variable:
javascript const A = function() { // lógica };
Esta forma se conoce como expresión de función. A diferencia de la declaración de función, donde usamos la palabra clave function seguida de un nombre, en la expresión de función el identificador queda a cargo de la variable. Es una distinción clave a la hora de entender el hoisting y la organización del código.
¿Pueden las funciones tener propiedades, métodos y anidarse entre sí?
Las funciones no solo reciben y retornan valores. También pueden tener propiedades y métodos asociados [3:05]. Por ejemplo, el método .call() permite cambiar el contexto de ejecución de una función, vinculándola a un objeto específico:
javascript function A() { // lógica }
const obj = {}; A.call(obj);
El contexto de ejecución determina a qué se refiere this dentro de la función. Con .call(), le indicamos que this apunte al objeto que le pasamos.
¿Qué son las funciones anidadas o nested functions?
Anidar funciones significa colocar una función dentro de otra [3:35]. Esto permite crear estructuras donde las funciones internas acceden a las variables de las funciones externas:
javascript function A() { function B() { function C() { // puede acceder a variables de A y B } C(); } B(); }
A();
Desde C es posible acceder a propiedades de A, y desde B también. Esta característica es la base de los closures y permite encapsular lógica de forma muy elegante.
¿Es posible almacenar funciones dentro de objetos?
La respuesta es sí [4:25]. Cuando una función vive dentro de un objeto, recibe el nombre de método. Veamos un ejemplo práctico con un objeto que representa un cohete:
javascript const rocket = { name: "FalconNine", launchMessage: function() { console.log("🔥"); } };
rocket.launchMessage();
Al ejecutar rocket.launchMessage(), se muestra el emoji de fuego en consola [5:40]. La propiedad launchMessage no almacena un valor simple, sino una función completa que puede ser invocada con la notación de punto.
- Un método es una función almacenada como propiedad de un objeto.
- Se invoca usando
objeto.metodo(). - Permite asociar comportamiento directamente a los datos.
Esta relación entre funciones y objetos es uno de los pilares de JavaScript. Saber que las funciones pueden pasarse como argumentos, retornarse, asignarse a variables, anidarse y almacenarse en objetos te da herramientas para escribir código más expresivo y modular. ¿Ya conocías todas estas capacidades? Comparte en los comentarios cuál te resultó más sorprendente.