FE Interview questions Flashcards
This
Hace referencia siempre a un objeto
El this en los arrow function
toma el valor del padre
Cambiar quien es this
bind, call y apply
bind dato interesante
bind nos devuelve una nueva función que podrá ser invocada en cualquier momento, mientras que call y apply se ejecutan sobre la misma función de manera instantanea.
Otro de los usos del bind, es para definir el valor de parámetros.
call y apply
Al igual que bind, nos permite cambiar el valor de this, pero se diferencian porque ejecuta la función.
//usamos el call, para cambiar el this y automáticamente se ejecuta
saludar.call(amigo);
//usamos apply, para cambiar el this y automáticamente se ejecuta
saludar.apply(amigo);
Diferencia entre call y apply
Como vemos arriba call y apply hacen lo mismo, la diferencia radica cuando tenemos parámetros extras en nuestra función, con call se envían por __, mientras que con apply, debemos enviar ___.
coma=call
apply=array
Closure
Funciones que recuerdan el entorno en el que se crearon, esto permite que las funciones internas(closures) tengan acceso a las variables de la función externa ya que están en el mismo scope.
Ejemplo de closures con la funcion prefijos
- Funcion prefijo, recibe prefijo por parametro
- Devuelve function con palabra de parametro
var addInPrefi = prefijos("In");
addInPrefi("creíble");
reduce
Es una función que se va a ejecutar para cada elemento del array y luego devolver un único valor conocido como acumulado.
- Usa reduce para sumar todo
let resultado,
numeros = [2,3,4];
Se ejecuta por cada elemento del array, y crea un nuevo array a partir del resultado de cada ejecución por elemento.
map
let numeros =[2,3,4];
devuelve un nuevo array con los dobles
Se ejecuta por cada elemento de array, y crea un nuevo array con los elementos que cumplen cierta condición.
filter
Saca un array nuevo con pares
let numeros =[2,3,4];
Qué es el Scope?
Cuando una línea de código está ejecutándose a que variables y funciones tengo acceso en ese momento.
La gente suele confundir, el scope con el ___, pero ___ se refiere al valor de this en determinado momento, mientras que scope se refiere a que variables y funciones tengo acceso.
contexto
Tipos de Scope
global, local y block
Global scope
Las variables y funciones están disponibles desde cualquier parte del código.
Local
Las variables y funciones están disponibles solo dentro de la función.
Global Scope
variable nombre, mostrarNombre(); colorFavorito();
block scope
entonces si declaramos variables dentro de if o for loops, estas pasan a ser del scope global o de la función, pero ya con ES6, podemos utilizar variables que solo sean para ese tipo de bloques.
Prototipos
un objeto hereda propiedades y métodos de un padre, entonces en Javascript la herencia funciona por prototipos
Prototype Chain(Cadena de prototipos)
Cada objeto tiene un prototipo, y este prototipo puede tener otro prototipo, así sucesivamente hasta encontrar a un prototipo que no tiene prototipo(el object Prototype).
Maneras de crear objetos en JS
- Objetos literales
- función contructora
- new Object()
- objeto literal con new object()
- Es6 class
Objetos Literales
Este tipo de objetos se definen dentro de brackets, se asignan sus propiedades por medio de clave y valor
Cuándo utilizar esta manera de definir objetos? la de object literal
Está manera se utiliza cuando se define una única instancia de un objeto, por ejemplo acá la instancia sería Luis, pero que hubiera pasado, si tuviera que crear a David, Kevin y Paolo?, para eso es mejor crear un constructor que se llame persona y así poder crear múltiples instancias.
Función constructora
Se crea una función la cual asigna sus propiedades con el this(haciendo referencia a la futura instancia del objeto), además puede recibir parametros para su inicialización.
Cuándo se utiliza la función constructora?
Se utiliza cuando quieres tener múltiples instancias de un objeto, se crea la función de la siguiente forma, y luego se crean las instancias.
New Object()
En esta forma se crea la instancia del objeto y luego se le asignan los valores.