Entendiendo JavaScript
Uriel Hernández
NaN == NaN // False
[] == ![] // True
WtfJS
El problema de JavaScript es ser distinto.
El Paradigma
El paradigma de JS son los prototipos
En POO los objetos se crean con clases
En POP los objetos se crean con... otros objetos.
let animal = Object.create(null);
animal.estaVivo = true;
let perro = Object.create(animal);
perro.ladrar = function(){
console.log(“Bark Bark”);
}
Sin clases a la vista
Las clases
Resulta que en JS sí existen las "clases"
class Animal{
}
class Animal{
}
Azúcar sintáctica
Elementos del lenguaje que hace al lenguaje más expresivo y fácil de leer
class Animal{
estaVivo = true;
}
let animal = Object.create(null);
animal.estaVivo = true;
Las funciones
function hola(){
console.log("Hola mundo");
}
Las funciones son ciudadanos de primera clase
Ciudadanos de primera clase
- Asignar a variables
- Pasar como argumentos
- Retornar
function hola(){
console.log("Hola mundo");
}
hola.esObjeto = true;
function hola(){
console.log("Hola mundo");
}
let helloer = new hola();
helloer.isObjecto = true;
Recapitulemos, las funciones son objetos, pero también pueden crear objetos.
Entendiendo a JavaScript
function hola(){
console.log("Hola mundo");
}
let helloer = new hola();
helloer.isObjecto = true;
let nuevoObjeto = Object.create(hola.prototype);
let resultado = hola.call(nuevoObjeto);
return resultado && typeof resultado === 'object' ?
resultado : nuevoObjeto;
A partir del prototipo de la función, se crea otro objeto, esto es un objeto creando otro objeto
let helloer = new hola();
Azúcar sintáctica
Conclusión
Entender JavaScript
- Las funciones
- Los prototipos
- La programación asíncrona
Entonces las cosas raras tendrán sentido
[] == ![] // True
deck
By Uriel Hernandez
deck
- 210