Introducir los tipos de datos básicos de javaScript?
Tipos de datos básicos : número , cadena , booleano , nulo , indefinido
object t es el objeto principal de todos los objetos en javascript
Objetos de encapsulación de datos: objeto, matriz, booleano, número, cadena
Otros objetos: Función, Argumentos, Matemáticas, Fecha, Error, RegExp
Otros tipos de datos: Símbolo
Tipo de datos de referencia: Objeto (matriz, fecha, RegExp, función)
¿Cuáles son los objetos integrados de js?
Los objetos comúnmente utilizados en js son: Argumentos función colección de parámetros Array array Boolean Objeto booleano Datos fecha hora Objeto de excepción de error Constructor de funciones Objeto matemático Número Objeto numérico Objeto Objeto básico RegExp Objeto de expresión regular Cadena Objeto de cadena
¿De cuántas maneras js crea objetos?
modo de fábrica, modo de constructor, modo de prototipo, modo de prototipo de constructor híbrido, modo de prototipo dinámico
¿Cuántas formas de crear funciones?
Función de declaración de funciones fun(){ }
expresión de función let fun =función(){ }
Tipo de objeto de función let fun = nueva función ("parámetro", "cuerpo de función")
¿Cómo convertir una matriz en un objeto json y luego volver a convertirla?
¿Qué tipos de datos devuelve el tipo de javascript?
objeto número función booleano underfind cadena
¿Cuántas formas hay de retrasar la carga de js?
Seis tipos: atributo diferido, atributo asíncrono, crear dinámicamente el método dom, usar el método getScript de jquery, usar el método de retraso setTimeout, dejar que js se cargue al final.
HTML 5 define el atributo asíncrono para la etiqueta <script>. Después de agregar este atributo, el script y el HTML se cargarán juntos (asincrónicamente) y el código se ejecutará sin problemas.
Cuando el navegador encuentra una secuencia de comandos asíncrona, no bloqueará la representación de la página, sino que la descargará y ejecutará directamente. Pero el problema con esto es que no se puede controlar el orden de ejecución de los diferentes guiones, pero los guiones no impedirán la visualización de las páginas restantes.
El atributo asíncrono solo se aplica a los archivos de script externos.
¿Cuál es la diferencia entre colocar la etiqueta Script en la parte inferior de la página antes y después de cerrar el cuerpo?
¿Cómo los analizará el navegador? Si se coloca antes del cierre del cuerpo, bloqueará la carga de otros recursos.Si se coloca después del cierre del cuerpo, no afectará la carga de elementos en el cuerpo.
La diferencia entre dividir() unir()
El primero tiene la forma de cortar en una matriz, y el segundo es convertir una matriz en una cadena.
método join() : se utiliza para poner todos los elementos de la matriz en una cadena.
Los elementos están separados por el delimitador especificado.
Método split() : se utiliza para dividir una cadena en una matriz de cadenas.
Métodos de matriz pop() push() unshift() shift()
Añadir al final de Push() pop() borrar al final Unshift() añadir shift() al principio y borrar al principio
¿Qué son los cierres?
El cierre js es una función anidada dentro de una función, y la subfunción se refiere a la variable de la función externa. Cuando se llama a la subfunción por retorno, la variable siempre permanecerá en la memoria.
¿Cómo agregar, eliminar, mover, copiar, crear y encontrar nodos?
1) Crear un nuevo nodo
createDocumentFragment() //Crear un fragmento DOM
createElement() //Crear un elemento específico
createTextNode() //Crear un nodo de texto
2) Agregar, quitar, reemplazar, insertar
appendChild() //añadir removeChild() //eliminar replaceChild() //reemplazar insertBefore() //insertar
3) Encuentra
getElementsByTagName() //Por el nombre de la etiqueta getElementsByName() //Por el valor del atributo Name del elemento getElementById() //Por el Id del elemento, unicidad
¿Cómo implementa Javascript la herencia?
Herencia de cadena de prototipos, herencia de constructores prestados, herencia de composición, herencia parasitaria, herencia de composición parasitaria
¿Podría hablar sobre las desventajas de las cookies?
Desventajas: 1. Límites en el número y duración de las 'Cookies'. Cada dominio solo puede tener 20 cookies como máximo, y la longitud de cada cookie no puede exceder los 4 KB; de lo contrario, se cortará.
2. Cuestiones de seguridad. Si la cookie es interceptada, esa persona puede obtener toda la información de la sesión. Incluso el cifrado no ayuda, porque el interceptor no necesita saber el significado de la cookie, puede lograr su objetivo siempre que reenvíe la cookie tal como está.
3. Algunos estados no se pueden guardar en el lado del cliente. Por ejemplo, para evitar envíos repetidos de formularios, debemos mantener un contador en el lado del servidor. Si almacenamos este contador en el lado del cliente, no hará nada.
JavaScript este puntero, cierre, alcance
esto: apunta al contexto de llamada
Cierre: el ámbito interno puede acceder a las variables del ámbito externo
Alcance: la definición de una función abre un alcance local, y todo el entorno de ejecución js tiene un alcance global
¿Qué hace exactamente el operador new?:
1. Crea un objeto vacío, y la variable this se refiere al objeto, y también hereda el prototipo de la función.
2. Las propiedades y los métodos se agregan al objeto al que hace referencia this.
3. Esto hace referencia al objeto recién creado y finalmente lo devuelve implícitamente.
Antivibración y
antivibración de
estrangulamiento En el evento de desplazamiento, es necesario realizar un cálculo complejo o realizar la operación de clic antisecundario de un botón. Se puede lograr mediante la función anti-jitter
La esencia del estrangulamiento
anti-vibración y estrangulamiento es diferente. Anti-jitter es convertir múltiples ejecuciones en la última ejecución, y throttling es convertir múltiples ejecuciones en ejecución a intervalos.
Política del mismo origen de js Mismo origen
: Mismo protocolo, mismo nombre de dominio, mismo puerto
Origen diferente: Siempre que uno de los protocolos, nombres de dominio y puertos sea diferente, diferentes fuentes generarán una
política de mismo origen entre dominios Principal función: restrinja el acceso mutuo entre servidores de diferentes orígenes, mejore la seguridad del acceso del navegador a las páginas web
¿Qué es un proxy de eventos?
Eso es delegar el evento que originalmente debe vincularse al elemento principal y dejar que el elemento principal asuma el rol de monitoreo de eventos.
El principio del proxy de eventos es el burbujeo de eventos de elementos DOM. La ventaja de usar el proxy de eventos es que puede mejorar el rendimiento,
ahorrar mucho uso de memoria y reducir el registro de eventos.
Puede darse cuenta de que cuando se agregan nuevos subobjetos, no hay necesidad de vincularlos nuevamente.
¿Cuál es la diferencia entre forEach y map en una matriz?
El mismo punto de forEach y map
El mismo punto es recorrer cada elemento de la matriz
Los métodos forEach y map admiten 3 parámetros cada vez que se ejecuta la función anónima. Los parámetros son item (cada elemento actual)
, index (valor de índice) y arr (la matriz original).
Esto en la función anónima apunta a la ventana y solo se puede atravesar La matriz no cambiará la matriz original
La diferencia entre
el método de mapa
1. El método de mapa devuelve una nueva matriz, y los elementos de la matriz son los valores procesados llamando a la función de la matriz original.
2. El método de mapa no detecta matrices vacías, y el El método map no cambia la matriz original.
3. Compatibilidad con navegadores: Chrome, Safari1.5+, opera all support, IE9+, si arr es una matriz vacía, el
método map devuelve una matriz vacía.
método forEach
1. El método forEach se utiliza para llamar a cada elemento de la matriz y pasar el elemento a la función de devolución de llamada
2. forEach no llamará a la función de devolución de llamada para una matriz vacía. Independientemente de si arr es una matriz vacía,
forEach devuelve undefined. Este método simplemente ejecuta cada elemento de la matriz como un parámetro de devolución de llamada una vez
¿Cuál es el mecanismo de recolección de basura en JS, cuál se usa comúnmente y cómo lidiar con él?
El mecanismo de recolección de basura de JS es para evitar fugas de memoria. El significado de las fugas de memoria es que cuando ya no se necesita una parte de la memoria, el mecanismo de recolección de basura aún existe en esta parte de la memoria. El mecanismo es encontrar variables no utilizadas de forma intermitente
y irregularmente, y suéltelos para borrar la memoria a la que apuntan.
La forma más común de recolección de basura en JS es
marcar y borrar
el principio de funcionamiento: cuando una variable ingresa al entorno, marque esta variable como "ingresando al entorno". Cuando una variable sale del entorno,
se marca como "salir del entorno". Recuperar memoria si está marcado como "dejar el entorno"
Flujo de trabajo:
el recolector de elementos no utilizados marcará todas las variables almacenadas en la memoria en tiempo de ejecución, eliminará las variables del entorno
y las variables a las que hacen referencia las variables del entorno y, a continuación, las marcará como Variables para eliminar.
El recolector de elementos no utilizados completa la limpieza de la memoria, destruye esos valores marcados y recupera el espacio de memoria que ocupan
Varios métodos de bucle transversal de js
forEach() : El parámetro es una función de devolución de llamada, que recorrerá todos los elementos de la matriz. La función de devolución de llamada acepta tres parámetros, a saber, valor, índice, auto; forEach no tiene valor de retorno map()
: mismo como forEach, al mismo tiempo La función de devolución de llamada devuelve datos para formar una nueva matriz. El mapa devuelve
cada () : lo mismo que forEach, y la función de devolución de llamada devuelve valores booleanos, todos los cuales son verdaderos, y cada devuelve verdadero
algunos ( ) : lo mismo que forEach, y la función de devolución de llamada devuelve valores booleanos, siempre que haya uno que sea verdadero, devuelto como verdadero por algunos
¿Pros y contras de los iframes?
Ventajas: 1. Resuelva el problema de carga de contenido de terceros de carga lenta, como íconos y anuncios.
2. Caja de arena de seguridad
3. Cargue scripts en paralelo
Desventajas: 1. iframe bloqueará el evento Onload de la página principal
2. Aunque el contenido esté vacío, tardará en cargarse
3. Sin semántica
Función de cadena:
.charAt(index);//el método charAt() puede devolver el carácter en la posición especificada.
.charCodeAt(index);//El método puede devolver la codificación Unicode del carácter en la posición especificada. El valor devuelto es un número entero entre 0 y 65535.
String.fromCharCode();//El método devuelve la cadena creada por la secuencia especificada de unidades de código UTF-16
.indexOf();
.lastIndexOf();
.concat();
.split();//Dividir la cadena en Array split("")
.slice();
.substring();
.substr();//La nueva versión descarta y recomienda subcadena
.replace(searchValue,replaceStr|function);//El texto reemplaza el primer carácter devuelto Nueva cadena
.replaceAll(searchValue,replaceStr|function);//El reemplazo de texto coincide con todos los caracteres
.toLowerCase();//Convierte todos los caracteres ingleses a minúsculas
.toUpperCase();//Convertir todas las cadenas en inglés a mayúsculas.repetir
();//Copiar el número especificado de
caracteres.trim();//Eliminar los espacios iniciales y finales.
Función de matriz:
indexOf(); El elemento de búsqueda es en la matriz La posición de la primera aparición no devuelve -1
push(); Agrega uno o más elementos al final de la matriz
pop(); Elimina el último elemento de la matriz y devuelve el elemento eliminado
shift(); Eliminar el primer elemento de datos y devolver el elemento eliminado
sin cambiar (); Insertar uno o más elementos al comienzo
de la matriz sort(); Ordenar los elementos de la matriz.
slice(); Obtener el fragmento de la matriz y devolverlo sin cambiar el matriz original
splice(); Interceptar, eliminar, modificar los elementos de la matriz y devolver la matriz recibida Afecta el resultado. Cambiará la matriz original
concat(); Fusionar la matriz
join(); Conectar cada elemento de la matriz con un separador para formar una cadena
inversa(); Voltear el arreglo
map(); Recorrer cada elemento en el arreglo y devolver un nuevo arreglo
filter(); filtrar la matriz
forEach(); recorrer la matriz
call, apply, bind difference
call(objeto apuntado por this, parámetro 1, parámetro 2, parámetro 3, ...)
apply(objeto apuntado por this, [parámetro 1, parámetro 2, parámetro 3, ...])
bind( El objeto al que apunta this, parámetro 1, parámetro 2, parámetro 3, ...)
son los mismos:
call, apply y bind son todos métodos del prototipo de función, y
todos cambian el punto interno de este cuando el Se llama a la función
El primer parámetro es El objeto al que apunta esto dentro de la función
Diferencias:
la llamada comienza desde el segundo parámetro como un parámetro de la función, y el parámetro se pasa en un solo paso, y no se puede pasar como una matriz de parámetros;
apply comienza desde el segundo parámetro como parámetro de la función, y el segundo parámetro es una matriz
que contiene todos los parámetros de la función.
bind comienza desde el segundo parámetro como los parámetros de la función, y los parámetros son pasado en un solo paso, y no se puede pasar en una matriz de parámetros,
y devolver una función a la que apunta this dentro de la función enlazada
¿A qué se debe prestar atención cuando se usan funciones de flecha?
(1) Con la función de flecha, esto no apunta a la ventana, sino al padre (señalar es variable) (
2) El objeto de argumentos no se puede usar
(3) No se puede usar como un constructor, lo que significa que el nuevo comando no se puede usar, de lo contrario se generará un error
(4) El comando yield no se puede usar, por lo que la función de flecha no se puede usar como una función de generador
Qué es una copia superficial y una copia profunda de un objeto, cuál es la diferencia y cómo implementar una copia profunda de un objeto
Copia superficial copia la dirección de la referencia al objeto
La copia profunda es recorrer el objeto recursivamente hasta que el valor sea un tipo de datos básico y luego copiar
La copia superficial de los valores de los objetos antiguos y nuevos se afectará entre sí. Las copias profundas no se afectan entre sí
Proceso de implementación: definir una función de copia profunda, recibir un parámetro,
Use typeof para determinar si el parámetro es un objeto
Luego use Array.isArray para juzgar si es una matriz, si lo es, se generará una matriz vacía, y si no lo es, se generará un objeto vacío.
Realice un bucle for in sobre los parámetros para determinar si cada elemento es un objeto. Si lo es, se llama a sí mismo y lo asigna a un nuevo objeto. De lo contrario, asigna un valor antes y devuelve el nuevo objeto.
json..parse(Json.stringify(obj)) también puede realizar una copia profunda de objetos y matrices, pero no puede copiar funciones