Tipos básicos de JavaScript, tipos de referencia, tipos de empaquetado básicos, objetos monolíticos integrados

Tipo básico

Tipos de datos básicos: número, cadena, booleano, nulo, indefinido. Tipos de datos mixtos: tipos de datos de
referencia de objeto : matriz, fecha, RegExp,
tipo de función de tipos de datos: objeto, número, función, booleano, indefinido

Las variables de ECMAScript incluyen valores de dos tipos de datos diferentes: valores de tipo básicos y valores de tipo de referencia.
Valor de tipo básico: segmento de datos simple
Valor de tipo de referencia: se refiere a un objeto que puede estar compuesto de múltiples valores; un valor de tipo de referencia es un objeto almacenado en la memoria.
JavaScript no permite el acceso directo a ubicaciones en la memoria, es decir, no puede manipular directamente el espacio de memoria de los objetos. Al manipular objetos, en realidad está manipulando la referencia del objeto en lugar del objeto real.

Tipo de referencia

El valor (objeto) del tipo de referencia es una instancia del tipo de referencia.
Los tipos de referencia a veces se denominan definiciones de objeto porque describen las propiedades y los métodos de una clase de objetos.
Se crean nuevos objetos utilizando el nuevo operador seguido de un constructor. El propio constructor es una función, excepto que la función se define con el fin de crear nuevos objetos. (Consulte otro artículo para el tipo de matriz)

tipo de objeto

Tipo de objeto tipo de referencia nativo
La mayoría de los valores de tipo de referencia son instancias de tipo de objeto,
hay dos formas de crear una instancia de objeto:
1. Use el nuevo operador seguido del constructor de objetos var person = new Object ();
2. Representación literal del objeto Método Es una forma abreviada de definición de objeto que simplifica el proceso de creación de objetos que contienen una gran cantidad de atributos.
var person = {"name": "ABC"};
Al usar la sintaxis literal del objeto, el nombre del atributo también puede usar la cadena
var person = {"name": "ABC", "age": 29,5: true} ; 5 también se convertirá automáticamente en una cadena

En general, la notación de puntos se usa al acceder a las propiedades de los objetos, y JavaScript también puede usar la notación de corchetes para acceder a las propiedades de los objetos. La ventaja de la sintaxis de corchetes es que se puede acceder a los atributos a través de variables. Se recomienda utilizar la notación de puntos
var propiedad de tipo = "nombre";
alerta (persona [propiedad de tipo]); "ABC"

Tipo de fecha

El tipo de fecha usa el número de milisegundos que han pasado desde la medianoche (hora cero) del 1 de enero de 1970 UTC. El
método Date.parse () recibe un parámetro de cadena que representa una fecha y luego intenta devolver el milisegundo de la fecha correspondiente en función de esta cadena
El comportamiento del método Date.parse () varía según la implementación, y generalmente varía según la región.
Estados Unidos: "mes / día / año" "Inglés mes, día, año" "Inglés día de la semana Inglés mes día día hora hora: minuto: Segunda zona horaria "
var someDate = new Date (Date.parse (" 25 de mayo de 2004 "));
var someDate = new Date (" 25 de mayo de 2004 "); Equivalente, el fondo llama automáticamente Date.parse ()
Date.now () Método, devuelve el número de milisegundos que representan la fecha y la hora en que se llamó a este método.
Ejemplo:

var start = Date.now();  //取得开始时间
dosomething(); //调用函数
var stop = Date.now();  //取得停止时间或 var stop = + new Date();
result = stop - start; 在不支持它的浏览器中,使用+操作符获取Date对象时间戳

Tipo RegExp (objeto local)

  1. expresión var = / patrón / banderas; Las expresiones regulares definidas en forma de
    banderas literales : indican el comportamiento de la expresión regular
    g: indican el modo global. Es decir, el patrón se aplicará a todas las cadenas, en lugar de detenerse inmediatamente cuando se encuentra la primera coincidencia
    i: indica un patrón que no distingue entre mayúsculas y minúsculas
    m: indica que el patrón de varias líneas
    es similar a la expresión en otros idiomas, el patrón utilizado Todos los metacaracteres deben escapar.
    Metacaracteres en expresiones regulares: ([{\ ^ $ |)? * +.]}
  2. Use el constructor RegExp con dos parámetros: patrón de cadena para que coincida, cadena de bandera opcional
    var pattern = new RegExp ("\ [bc \ at", "i");
    El método principal del objeto RegExp es exct () El
    segundo método diseñado específicamente para capturar grupos es test (), que toma un parámetro de cadena y devuelve verdadero si el patrón coincide con el parámetro.

Tipo de función

La función es en realidad un objeto.
Dado que la función es un objeto, el nombre de la función es en realidad un puntero al objeto de la función y no estará vinculado a una función

  1. Sintaxis de declaración de función

    función sum (num1, num2) {
    return num1 + num2;
    }

  2. Función expresión definición función

    var sum = function (num1, num2) {
    return num1 + num2;
    }

  3. Usando el constructor de funciones, puede recibir cualquier número de parámetros, el último parámetro se ve como el cuerpo de la función

    var sum = nueva función ("num1", "num2", "return num1 + num2"); no recomendado

Debido a que el nombre de la función es solo un puntero a la función, el nombre de la función no es diferente de otras variables que contienen punteros de objeto.
Una función tendrá varios nombres.

function sum(num1,num2){
	return num1+num2;
}
alert(sum(10,10));//20
var anotherSum = sum;
alert(anotherSum(10,10));//20
sum = null;
alert(anotherSum(10,10));//20

Declare la variable anotherSum y configúrelo igual a sum (asigne el valor de sum a anotherSum), ¡preste atención! El nombre de la función sin paréntesis es para acceder al puntero de la función, no para llamar a la función. En este momento, ambos otherSum y sum apuntan a la misma función, sum se establece en nulo y no afecta a otro.

Ninguna sobrecarga
declara dos funciones con el mismo nombre, y el resultado es que la última función sobrescribe la función anterior

La diferencia entre el tipo de datos original y el tipo de datos de referencia

La ubicación de almacenamiento es diferente
. El segmento de datos simple donde el tipo de datos original se almacena directamente en la pila tiene un espacio pequeño y un tamaño fijo. Pertenece a los datos utilizados con frecuencia, por lo que se coloca en la pila para almacenar el
tipo de datos de referencia. El tamaño no es fijo. Si se almacena en la pila, afectará el rendimiento del programa. El tipo de datos de referencia almacena el puntero en la pila, y el puntero se cambia para que apunte a la dirección inicial de la entidad en el montón. Cuando el intérprete busca el valor de referencia, primero recuperará la dirección en la pila y obtendrá la entidad del montón después de obtener la dirección.

Definir el valor del tipo básico y el tipo de referencia es similar: crear una variable y asignar un valor a la variable. Cuando este valor se guarda en la variable, las operaciones que se pueden realizar en diferentes tipos de valores son muy diferentes. Para el valor del tipo de referencia, puede agregar atributos y métodos, también puede cambiar y eliminar sus atributos y métodos.

Tipo de embalaje básico

Para facilitar la operación de los valores básicos de tipo. ECMAScript proporciona tres tipos de referencia especiales: Boolean, Number y String
var s1 = "some text";
var s2 = s1.substring (2);
los valores de tipo básicos no son objetos, y lógicamente no deberían tener métodos.
Cuando la segunda línea de código accede a s1, el proceso de acceso está en modo de lectura, es decir, el valor de esta cadena debe leerse de ella. Al acceder a una cadena de caracteres en modo de lectura, el fondo completará automáticamente el siguiente procesamiento. El valor de la cadena básica se convierte en el mismo que el objeto.

1. Cree una instancia de tipo String
2. Llame al método especificado en la instancia
3. Destruya esta instancia
var s1 = new String ("some text");
var s2 = s1.substring (2);
s1 = null;

Tipo de número

El método toString () pasa un parámetro que expresa la cardinalidad y le dice que devuelva la forma de cadena del valor decimal.
var num = 10;
alert (num.toString ()); // "10"
alert (num.toSting (2)); // "1010" binary
toFixed () devuelve una cadena numérica de acuerdo con los lugares decimales especificados representa
Alert (num.toFixed (2)); // "10.00"
var NUM = 10.005;
Alert (num.toFixed (2)); // "10.01" redondeo automático

Tipo de cadena

Cada instancia tiene un atributo de longitud

Método de caracteres

Dos métodos para acceder a caracteres específicos en una cadena: charAt () y charCodeAt () El
método charAt () devuelve el carácter en una posición dada en forma de una cadena de un solo carácter
var stringvalue = "hello world";
alert (stringvalue. charAt (1)); // “e”
charCodeAt () obtiene la
alerta de codificación de caracteres (stringvalue.charCodeAt (1)); // “101”
puede usar corchetes más un índice numérico para acceder a caracteres específicos en la
alerta de cadena ( stringvalue [1]); // "e" IE7 previamente devuelto undefined

Método de manipulación de cadenas

  1. El método concat () concatena una o más cadenas y devuelve la nueva cadena obtenida por concatenación.
    Var result = stringvalue.concat ("!"); Se pueden aceptar múltiples parámetros sin afectar la
    alerta de cadena original (resultado); / / "¡Hola, mundo!"
    Más concatenación de cadenas es más operador (+)

  2. ECMAScript proporciona tres métodos para crear nuevas cadenas basadas en subcadenas: slice (), substr () y substring (), todos devuelven una subcadena de la cadena manipulada y todos aceptan uno o dos parámetros. Modificará la cadena en sí

  • El primer parámetro especifica la posición inicial de la subcadena, el segundo parámetro de la división () y la subcadena () especifica la posición después de la última cadena del subcaracter, y el segundo parámetro de la subcadena () especifica el retorno Numero de caracteres
  • El parámetro es un valor negativo. El
    método slice () agrega el valor negativo entrante a la longitud de la cadena. El
    método substr () agrega el primer parámetro negativo a la longitud de la cadena y convierte el segundo parámetro negativo en 0, el
    método substring () convertirá todos los parámetros negativos a 0
  1. Método de posición de cadena El método para
    encontrar una cadena de una cadena: indeOf () y lastIndexOf () devuelven la posición de la subcadena.
    Ambos pueden aceptar el segundo parámetro opcional, que indica desde qué posición en la cadena comenzar la búsqueda

  2. El método tirm ()
    crea una copia de la cadena, elimina todos los espacios antes y después del sufijo, y luego devuelve el resultado
    var str = "hello"; alert (str.trim ()); // "hello"

  3. Métodos de conversión de mayúsculas y minúsculas
    toLowerCase (), toLocaleLowerCase (), toUpperCase (), toLocaleUpperCase ()

  4. Método de coincidencia de patrón de cadena

  • La esencia de match () es la misma que el método exec () de llamar a RegExp. Solo acepta un parámetro. La expresión regular / objeto RegExp
    var text = "cat, bat, sat, fat";
    var pattern = /.at/; // y pattern. exec (texto); la misma
    var coincide = text.match (patrón);
    alert (match.index); // 0
    alert (coincide con [0]); //
    alerta "cat" (pattern.lastIndexOf ()); // "0"

  • La forma de encontrar el patrón es que search ()
    devuelve el índice de la primera coincidencia en la cadena
    var text = "cat, bat, sat, fat";
    var pos = text.search (/ at /);
    alert (pos); // La primera aparición de "at" en la cadena

  • Método replace ()
    Dos parámetros, un objeto RegExp o una cadena, una cadena o una función
    var text = "cat, bat, sat, fat";
    var result = text.replace (/ at / g, "ond") ;
    alerta (resultado); // "cond", "bond", "sond", "fond"


  • El separador especificado por el método split () separa una cadena en varias subcadenas y coloca el resultado en una matriz. El separador puede ser una cadena o un objeto RegExp. Dos parámetros son opcionales Tamaño
    var colorText = "rojo, azul, verde, amarillo";
    var color1 = colorText.split (","); // ["rojo", "azul", "verde", "amarillo"]
    var color2 = colorText. split (",", 2); // [[rojo "," azul "]

  1. método localeCompare (), compara dos cadenas, de acuerdo con las reglas de clasificación del alfabeto

  2. El método formCharCode () recibe uno o más códigos de caracteres y luego los convierte en una cadena. CharCodeAt () realiza la operación opuesta

La principal diferencia entre los tipos de referencia y los tipos de empaques básicos es la vida útil de los objetos.

Las instancias de los tipos de referencia creados con el nuevo operador se mantienen en la memoria hasta que el flujo de ejecución abandone el alcance actual. Los objetos creados automáticamente del tipo de empaquetado básico existen solo en el momento de la ejecución de una línea de código, y luego se destruyen inmediatamente. Esto significa que ya no podemos agregar propiedades y métodos a los valores de tipo básicos en tiempo de ejecución.
Llamar a typeof en una instancia de un tipo de paquete básico devolverá "objeto", y todos los objetos del tipo de paquete básico se convertirán a booleano verdadero.

Objetos monolíticos incorporados (gload, Math no se puede instanciar)

Definición de ECMAScript-262: Objetos proporcionados por la implementación de EXMAScript que no dependen del entorno host. Estos objetos ya existían antes de la ejecución del programa ECMAScript.
Todas las propiedades y funciones definidas por Global y Math en el ámbito global son propiedades del objeto Global

  1. Método de codificación URI
    Los métodos encodeURI () y encodeURIComponent () del objeto Global pueden codificar el URI (Identificador Universal de Recursos) para enviarlo al navegador

  2. Método eval () El método
    eval () es como un analizador completo de ECMAScript. Solo se necesita un parámetro, la cadena ECMAScript (o JavaScript) para ejecutarse
    eval ("alert (" hi ")); equivalente a alert ( "Hola");
    el código ejecutado por eval () puede referirse a la variable definida en el entorno que contiene
    var msg = "hello world"; eval ("alert (msg)"); // "hello world"
    creado en eval () Las variables o funciones no se promocionarán, porque al analizar el código, se incluyen en una cadena, que solo se crea cuando se ejecuta eval ()

objeto de ventana

ECMAScript no indica cómo acceder directamente al objeto Global, pero los navegadores web implementan este objeto global como parte del objeto de ventana, por lo tanto, en el ámbito global, todas las variables y funciones declaradas se convierten en objetos de ventana Atributos
Otra forma de obtener objetos globales

var global = function(){
	return this;
}();

Ejecute la función inmediatamente y devuelva este valor. Si el valor de este no se especifica para la función, este valor es igual al objeto Global

Objeto matemático

  1. Métodos min () y max ()
    Para encontrar el valor máximo o mínimo en una matriz, de la siguiente manera:
    var val = [1,2,3,4,5,6,7,8];
    var max = Math.max.apply (Math , val);
    tome el objeto Math como primer parámetro de apply para establecer este valor correctamente

  2. Método de redondeo
    Math.ceil () redondea Math.ceil (25.9); // 26
    Math.floor () realiza el redondeo hacia abajo Math.floor (25.9); // 25
    Math.round () redondea estándar 25.9 -> 26 25.5-> 26 25.1-> 25

  3. El método rondom ()
    devuelve un número aleatorio mayor o igual a 0 y menor que 1
    valor = Math.floor (Math.random () * puede valer el total + el primer valor posible)
    entre 1 y 10 var num-Math.float (Math .random () * 10 + 1)

Copiar valor variable

Si copia un valor de tipo básico de una variable a otra, se crea un nuevo valor en el objeto variable, y luego el valor se copia en la ubicación donde se asigna la nueva variable.
Al copiar un valor de tipo de referencia de una variable a otra, el valor almacenado en el objeto variable también se copia en el nuevo espacio de asignación de variables. La diferencia es que esta copia que vale la pena es un puntero, y este apunta a un objeto almacenado en el montón. Una vez que finaliza la operación de copia, las dos variables en realidad se refieren al mismo objeto, por lo que cambiar una de las variables afectará a la otra.
Ejemplo:

  1. var num1 = 5; var num2 = num1;
    El valor almacenado en num1 es 5, cuando el valor de Num1 se usa para inicializar num2, el valor 5 también se guarda en num2, pero 5 en num2 y 5 en num1 son completamente independientes. El valor es solo una copia de 5 en num1. Después de eso, las dos variables pueden participar en cualquier operación sin afectarse entre sí.
  2. var obj = new Object (); var obj2 = obj1; obj1.name = "ABC"; alert ( obj2.name ); // "ABC"
    obj1 guarda una nueva instancia de un objeto, este valor se copia en obj2, obj1, obj2 se refiere al mismo objeto. obj1 agrega el atributo de nombre, y obj2 también puede acceder a este atributo.

Este artículo es del resumen de "Programación avanzada de JavaScript"

17 artículos originales publicados · elogiados 0 · visitas 769

Supongo que te gusta

Origin blog.csdn.net/CandiceYu/article/details/89888802
Recomendado
Clasificación