Javascript On Boarding INTRO Clase 1
Javascript On Boarding INTRO Clase 1
Lenguaje interpretado: No necesita ser compilado, el navegador interpreta el código en tiempo real.
Ideal para cuando se necesita cambiar el valor de una variable en un ámbito específico.
const PI = 3.14;
var tiene un alcance de función mientras que let y const tienen un alcance de bloque.
const se usa para valores constantes que no cambiarán, mientras que let permite reasignación.
Contexto de ejecución de función: Cada vez que se ejecuta una función, se crea un nuevo contexto de
ejecución.
Ámbito léxico: Es el contexto donde se declara una variable, lo que determina dónde es accesible.
function saludar() {
console.log(saludo);
saludar();
Arrays
Un array es una estructura de datos que almacena varios elementos en una sola variable. Se puede
acceder a cada elemento por su índice.
Objetos
let persona = {
nombre: "Juan",
edad: 30,
saludar: function() {
};
persona.saludar();
Clases en JavaScript
Las clases en JavaScript son estructuras que permiten crear objetos con propiedades y métodos
predefinidos. Facilitan el uso de la programación orientada a objetos, ya que permiten encapsular datos
y funcionalidades dentro de una estructura. Las clases son "plantillas" para crear objetos con
características similares.
Podemos definir una clase usando la palabra clave class. Dentro de una clase, el constructor es un
método especial que se ejecuta al crear una instancia de la clase, y se utiliza para inicializar las
propiedades del objeto.
class Persona {
// Constructor
constructor(nombre, edad) {
// Método
saludar() {
}
}
Herencia de Clases
La herencia permite crear una nueva clase basada en otra existente, lo que es útil para reutilizar código y
definir jerarquías de clases. En JavaScript, la herencia se logra con la palabra clave extends.
// Método adicional
estudiar() {
class CuentaBancaria {
constructor(saldoInicial) {
this.#saldo = saldoInicial;
obtenerSaldo() {
return this.#saldo;
depositar(monto) {
if (monto > 0) {
this.#saldo += monto;
cuenta.depositar(500);
this es una palabra clave especial en JavaScript que hace referencia al contexto actual de ejecución. Su
valor depende de cómo y dónde se llama. Es comúnmente usado dentro de clases y funciones para
acceder a las propiedades y métodos del objeto actual.
En el contexto global (fuera de funciones y clases): this hace referencia al objeto global (window en
navegadores o global en Node.js).
Dentro de una función regular: this también hace referencia al objeto global en modo no estricto. Sin
embargo, en modo estricto ('use strict'), this será undefined.
function mostrarThis() {
console.log(this);
const persona = {
nombre: "Ana",
saludar() {
};
class Persona {
constructor(nombre) {
El constructor en JavaScript
En una clase, el constructor es un método especial que se ejecuta automáticamente cuando se crea una
nueva instancia de la clase. Su propósito principal es inicializar las propiedades del objeto y establecer su
estado inicial.
Si una clase no tiene definido un constructor, JavaScript le asigna uno por defecto.
Puedes usar el constructor para asignar valores a las propiedades del objeto a través de this.
class Persona {
constructor(nombre, edad) {
saludar() {
Puede recibir parámetros: Al igual que una función normal, puedes pasarle argumentos para
personalizar cada instancia.
Es único en cada clase: Una clase solo puede tener un constructor. Si intentas definir más de uno,
obtendrás un error.
No necesita ser llamado explícitamente: Cuando se usa new para crear una instancia, el constructor se
ejecuta automáticamente.
El Operador new
El operador new se usa en JavaScript para crear una nueva instancia de un objeto a partir de una clase o
función constructora. Al utilizar new, suceden varias cosas de forma automática:
Se asigna this al nuevo objeto, vinculando el this dentro del constructor al objeto recién creado.
class Animal {
constructor(tipo) {
this.tipo = tipo;
}
const perro = new Animal("perro");
Antes de que se introdujeran las clases en ES6, JavaScript usaba funciones constructoras para crear
objetos.
function Vehiculo(marca) {
this.marca = marca;
console.log(coche.marca); // Output: To
Resumen de new
JavaScript fue creado originalmente como un lenguaje de programación de scripts en los navegadores,
enfocado en realizar tareas pequeñas y añadir interactividad básica a las páginas web. Su diseño inicial
era sencillo y no estaba pensado para desarrollar aplicaciones complejas, pero con el tiempo, las
demandas crecieron, y JavaScript comenzó a necesitar funciones más avanzadas.
Antes de la introducción de las clases en ECMAScript 2015 (ES6), JavaScript manejaba los objetos y la
programación orientada a objetos (POO) de una manera única comparada con otros lenguajes. En lugar
de clases, usaba:
Funciones Constructoras: Eran funciones especiales que servían como "plantillas" para crear objetos.
Estas funciones constructoras permitían definir ciertas propiedades y métodos que luego podían ser
usados por los objetos creados con new.
this.nombre = nombre;
this.edad = edad;
Persona.prototype.saludar = function() {
};
Prototipos: JavaScript está basado en prototipos, un mecanismo que permite que los objetos compartan
propiedades y métodos a través de una "cadena de prototipos". Cada función en JavaScript tiene una
propiedad prototype, que es un objeto donde se pueden definir propiedades y métodos para que los
compartan todas las instancias creadas por esa función.
Sin embargo, este sistema de prototipos y funciones constructoras no era tan intuitivo ni sencillo de usar
como las clases en otros lenguajes. Este enfoque hacía que la programación orientada a objetos en
JavaScript fuera menos accesible para desarrolladores que venían de lenguajes como Java o Python, que
tienen una estructura de clases más clara y definida.
Las clases en ES6 son, en realidad, una sintaxis simplificada sobre el sistema de prototipos existente en
JavaScript. Aunque no cambian la base prototípica del lenguaje, permiten que los desarrolladores
definan objetos y sus comportamientos de una forma más intuitiva.
Legibilidad: Las clases hacen que el código sea más legible y más fácil de entender, especialmente para
los programadores que vienen de otros lenguajes orientados a objetos.
Sintaxis Familiar: Al ofrecer una sintaxis similar a la de otros lenguajes como Java y Python, facilita la
transición de programadores hacia JavaScript.
Manejo más claro de la Herencia: Con extends y super, las clases permiten que los desarrolladores
hereden propiedades y métodos de forma más limpia y organizada, sin tener que manipular el prototipo
manualmente.
Encapsulación Mejorada: Con la introducción de propiedades privadas en versiones más recientes, las
clases permiten un mejor control sobre qué propiedades o métodos son accesibles fuera del objeto.
Ejemplo Comparativo
Imaginemos una clase Animal en ambos enfoques, el enfoque de funciones constructoras y el enfoque
moderno de ES6.
function Animal(tipo) {
this.tipo = tipo;
}
Animal.prototype.hacerSonido = function() {
};
class Animal {
constructor(tipo) {
this.tipo = tipo;
hacerSonido() {
La sintaxis de ES6 es más clara y se asemeja a la forma en que se definen clases en otros lenguajes,
haciendo que el código sea más intuitivo y fácil de seguir.
Resumen de la Evolución:
Antes de ES6: JavaScript utilizaba funciones constructoras y prototipos para la creación de objetos y la
herencia. Aunque funcional, este sistema resultaba complejo para desarrolladores que estaban
acostumbrados a lenguajes orientados a objetos más clásicos.
Después de ES6: Las clases trajeron una estructura más clara y familiar a JavaScript, facilitando el uso de
POO y promoviendo un código más organizado y legible, sin cambiar el núcleo prototípico del lenguaje.