(E) un tipo de referencia

Antes de escribir el artículo

Bloggers estudiante de introducción a la programación de C, por lo que algunos concepto también a su vez, sin embargo, el primer lenguaje no js para entender las clases siguientes, objetos e instancias

Clase es una colección de un grupo de objetos, que contiene un número de N objetos. El objeto es sólo un caso especial de la clase.

Decir "Un Beibei" es un perro, es sólo un caso especial de los perros (y no es lo mismo que otros perros, es el color del pelo, peso, longitud, y algunos atribuyen a determinar que es sólo en perros), y por lo tanto lo llamamos un objeto específico.

nuevo papel:

  • Crear un objeto, una instancia de un objeto
  • Instancia del objeto, dado el espacio objeto, es decir, la dirección de memoria del montón
  • Llamar al constructor

En resumen: cada objeto (Objeto) es una instancia de una clase (clase) de (Instancia)

En este capítulo

  • Usar objetos
  • Crear y manipular matrices
  • Entender los tipos básicos de JavaScript
  • Utilice los tipos básicos y los tipos de paquetes básicos

énfasis

La matriz de conjuntos de métodos, Conocer metodologías
Función: Este, aplica prototipo (), y la llamada (), bind ()

texto

golpe de tecla: el valor de tipo de referencia (objeto) es un tipo de referencia (clase) de una instancia
en ECMAScript, tipo de referencia es una estructura de datos para los datos y funciones organizados juntos. También se refiere a menudo como la categoría, pero este título no es apropiado. Aunque ECMAScript es un lenguaje orientado a objetos técnicamente, pero no tiene la configuración básica de clases e interfaces de apoyo tradicional orientado a objetos. No se calculan concepto, por lo que este ya no es el uso del concepto de clase.
Referencia Tipo refiere a veces como definición de objeto, ya que es una clase de objetos tienen sus propiedades y métodos descritos en este documento.

var person = new Object()

Esta línea de código crea una nueva instancia del tipo de referencia del objeto, a continuación, guardar las variables de instancia en persona. Cuando se utiliza el objeto constructor, sólo que define las propiedades predeterminadas y métodos para el nuevo objeto. ECMAScript proporciona muchos tipos de referencia nativa (por ejemplo, objetos), para que los desarrolladores para lograr las tareas informáticas comunes.

A, Tipo de Objeto

Hasta ahora, hemos visto la mayoría de los tipos de referencia son instancias del tipo de objeto y objeto es el tipo más utilizado de un ECMAScript, aunque una instancia de objeto no tiene mucho función, pero en el trato con el almacenamiento y transmisión de datos, que es una muy opción ideal.

crear

un nuevo

var person = new Object();
person.name = "Nicholas",
person.age = 18

Objeto sintaxis literal, para facilitar el proceso de creación de un objeto que contiene un gran número de propiedades. Por su definición del objeto, de hecho, no se llama al constructor del objeto.

: Nombre del atributo también puede utilizar la cadena "name":"Nicholas"automáticamente se convierte en una cadena, y el valor del nombre de la propiedad

//对象字面量语法
var person = {
    name:"Nicholas",
    age:18//不能添加逗号,ES6中可以
}

acceso

notación de puntos

//点表示法
person.name

notación de corchetes

La ventaja es variable se puede acceder a través de la propiedad, si el nombre de la propiedad contiene caracteres causarán un error de sintaxis, o si utiliza palabras clave o palabras reservadas, también puede utilizar este método

//括号表示法
var propertyName = "name"
person[propertyName]
person["first name"]  //含有铬空格,不能用点表示法来访问

Dos, el tipo de matriz

ECMAScript cada matriz puede almacenar cualquier tipo de datos, y el tamaño de la matriz se puede ajustar dinámicamente.

Crear y acceder

Cuando se utiliza la notación literal matriz también no llama al constructor de Array. (Excepto Firefox3 y anterior)

//new一个
var colors = new Array();
var colors = new Array(3);
var colors = new Array("red","blud","green");
var colors = Array()

//数组字面量表示法
var colors = ["red","blud","green"];
var colors = [1,2,];   // × 不要这样,会创建一个包含2或3项的数组 
colors[0]   //red

Usando la longitud

Fácil de agregar nuevos elementos al final de la matriz

colors[colors.length] = "black"

Array.isArray ()

problemas de detección en una matriz:
el operador instanceof asume su único entorno de ejecución global. Si la página contiene una pluralidad de cuadros, en realidad hay dos o más diferentes entorno de ejecución global, por lo que la presencia de dos o más diferentes versiones del constructor de Array. Si se pasa una matriz de un cuadro a otro marco, y luego el módulo de entrada en el segundo cuadro de forma nativa crear matrices cada uno tiene sus diferentes constructores. ¿Cómo se puede solucionar?

ECMAScript5 nuevo Array.isArray (array). Este enfoque en última instancia, determinar un valor al final no es una matriz, sin tener en cuenta creada en el que el entorno de ejecución global.

Métodos de matriz

Complementario:
.some () si hay un elemento satisface la condición, la expresión devuelve verdadero, los elementos restantes no realizar la detección.

.slice () no cambia la matriz original

método de reducción: reducir () y reduceRight, todas las fases Ambos métodos iterativos matriz, y luego construir se devuelve un valor final.

var values = [1,2,3,4,5]
var sum = values.reduce(function(){
    return prev + cur;
});
alert(sum)  //15

sort () para agregar

.Sort () con el fin de lograr el tipo, llamadas toString cada elemento de la matriz () el método de transformación, y luego la comparación cadena resultante.

var value = [0,1,5,10,15]
value.sort(),
values //0,1,10,15,5

Si quieres ser resuelto por otros criterios, es necesario proporcionar una función de comparación, una función para comparar los dos valores, y luego devuelve un número para explicar el orden relativo de estos dos valores.

❗ ❗ no llegar a conocer el funcionamiento interno de

//升序
function compare(value1,value2){
    if(value1 < value2){
        return -1;   //想要value1位于value2之前,则返回负数
    }else if(value1 > value2){
        return 1;    //想要value1位于value2之后,则返回正数
    }else{
        return 0;
    }    
}

var value = [0,1,5,10,15]
value.sort(compare),
values //0,1,5,10,15

Por tipo de valor o una valueOf () devuelve el método del tipo de objeto de los tipos numéricos, se puede utilizar una función de comparación más sencilla:

//升序
function compare(value1,value2){
    return value2-value1
}

Tres, tipo de fecha

new Date ()

Parámetro () en la nueva fecha o no, o es el número de milisegundos fecha (enero de 1970 a partir de la medianoche del primero), Date.parse () y Date.UTC () puede.

var myDate = new Date();   //2020-03-28T09:32:11.510Z
//Date.parse()和Date.UTC()
var myDate = new Date(Date.parse("May 25,2004"));  //2004-05-24T16:00:00.000Z
var myDate = new Date("May 25,2004");  
var myDate = new Date(Date.UTC(2000,0));  
var myDate = new Date(Date.UTC(2000,4,5,17,55,55)); //2000-05-05T17:55:55.000Z
//基于本地时区
var myDate = new Date(2000,0);
var myDate = new Date(2005,4,5,17,55,55)

Date.now ()

//取得开始时间
var start = Date.now()

doSomething()

//取得停止时间
var stop = Date.now()

métodos heredados

Al igual que otros tipos de referencia, la fecha también reescrito método () toLocaleString (), toString () y el valor. Sin embargo, estos métodos valores diferentes a otros tipos de métodos devuelven. La salida de estos métodos son diferentes en función del navegador

var myDate = new Date()
alert(myDate.toLocaleString())  //2020-3-28 18:05:38
alert(myDate.toString())  //Sat Mar 28 2020 18:05:38 GMT+0800 (GMT+08:00)
alert(myDate.valueOf())  //1585389938346

Formato de fecha

La salida de estos métodos varían dependiendo del navegador.
toDateString () mostrar el día de la semana, mes, día y año en el formato implementado en particular;
toTimeString () a una pantalla específica en formato de lograr, minutos, segundos y zona horaria
toLocalDateString () mostrar el día de la semana, mes a formato específico de la localidad , día y año
toLocalTimeString () para mostrar en un formato particular para lograr, minutos, segundos
toUTCString () específica para la plena realización de formato de fecha UTC

método común

myDate.getYear (); // Obtener el año en curso (2) 
myDate.getFullYear (); // Obtener el conjunto del año (4, 1970 - ????) 
myDate.getMonth (); // obtener el mes actual ( 0-11,0 representantes en enero), así que para obtener el mes actual es myDate.getMonth () + 1;  
myDate.getDate (); // obtener el día actual (1-31) 
myDate.getDay (); // obtener la semana en curso X (0-6,0 para el domingo) 
myDate.getTime (); // obtener la hora actual (número de milisegundos desde el inicio 01/01/1970) 
myDate.getHours (); // Obtener la hora actual (0-23) 
myDate. getMinutes (); // obtener el número actual (0-59) minutos 
myDate.getSeconds (); // obtener el número actual de segundo (0-59) 
myDate.getMilliseconds (); // obtener el número actual de milisegundos (0-999) 
myDate .toLocaleDateString (); // obtener la fecha actual

tipo de expresiones regulares

Positiva sobre el uso de expresiones regulares en JavaScript, se recomienda ver "JavaScript expresión regular mini-libro", después de leer de nuevo lo haría un resumen detallado.
Aquí no es demasiadas notas.

crear

var expression = /pattern/flags

patrón : puede ser cualquier simple o expresiones regulares complejas
banderas : grepresenta el mundial, que no se encuentra inmediatamente se detiene cuando el primer partido; ino representa entre mayúsculas y minúsculas; mrepresenta un modo multi-línea, una línea de texto que está llegando al final de Shihai Volver continuar Encuentra la línea siguiente

Propiedades de instancia

constructor devuelve una función, que consiste en crear el prototipo de un objeto RegExp.
determinar si un "g" global modificador
ignoreCase determina si una "i" modificador
lastIndex predeterminada posición de partida para el siguiente resultado de la
"m" modificador determina si una línea múltiple
fuente devuelve un juego regular de patrón de expresión

Ejemplos de métodos

regex.exec (str) Valor de retorno (matriz) para encontrar y determinar una posición
regex.test (str) detectar si una cadena de caracteres coincidan con el modelo
regex.toString () Devuelve una cadena de una expresión regular

Cinco, Función

Cada instancia de tipo de función es una función, y la otra Betta tipos de referencia como tener atributos y métodos. Porque cuando objeto función, por lo que el nombre de la función es en realidad un puntero a un objeto función, no están vinculados a una función particular .

crear

Función de definición de sintaxis de declaración

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

expresión de la función definida

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

Analizador cuando se carga de datos en el entorno de ejecución, serán las primeras declaraciones de las funciones de lectura, y hacerla accesible antes de ejecutar cualquier código
en cuanto a expresión de función, Xu Bo, espera hasta que el analizador de ejecutarlo en las líneas de código, realmente se interpreta.

alert(sum());
function sum(){
    //...
}

Comprender el nombre de la función es en realidad un puntero a un objeto función, mira el siguiente código

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

alert(sum(10,10))  //20

var anotherSum = sum;
sum = null;
alert(anotherSum(10,10))  //20

No exime (comprensión profunda)

Tres ejemplos: Capítulo

function addSomeNumber(num){
    return num + 100;
}

function addSomeNumber(num1,num2){
    return num1 + num2;
}

Contacto nombre de la función es en realidad un puntero al objeto función, el código puede verse como la siguiente:

function addSomeNumber(num){
    return num + 100;
}

addSomeNumber = function(num1,num2){   //表面上是覆盖原函数,实际是指针指向改变
    return num1 + num2;
}

En función del valor de

función de propiedad interna

argumentos, arguments.callee

El objetivo principal de los argumentos de que los argumentos de la función, este objeto también tiene una propiedad llamada destinatario de la llamada, esta propiedad es un puntero a una función que tiene argumentos objeto. Ejemplos:

function factorial(num){
    if(num <= 1){
        return 1;
    }else{
        //return num*factorial(num-1)
        return num*arguments.callee(num-1) 
    }
}

En el factorial reescrito esta función () en la función in vivo, y no más allá referencia al nombre de la función factorial. De esta manera, independientemente de qué nombre al hacer referencia a la función, puede garantizar la finalización normal de las llamadas recursivas.

esta

esta es una función de los datos de referencia en el objeto para el medio ambiente - o se puede decir que este valor (cuando se llama a una función en el ámbito global de la página, esta es la ventana de referencia de objeto). Ejemplo:

window.color = "red"
var o = {color: "blue"}

function sayColor() {
    alert(this.color)
}

sayColor();  //red

o.sayColor = sayColor;
o.sayColor();  //blue

Tenga en cuenta: el nombre del puntero de función es sólo una variable que lo contiene. Por lo tanto, incluso cuando se realiza en diferentes entornos, la función global sayColor () y o.sayColor () se siguen apuntando a la misma función.

llamador

Esta propiedad se mantiene la función actual de un borde Yong función de referencia. Si la función actual se invoca en el ámbito mundial, es nula.

Función propiedades y métodos

ECMAScript es una función del objeto, y por lo tanto tener atributos y métodos. Cada función contiene dos propiedades: la longitud y el prototipo. En donde, propiedad de longitud representa el número de funciones deseadas nombrados parámetros recibidos.

longitud

prototipo

En todos los atributos definidos en ECMAScript núcleo, el más intrigante del número necesario de propiedad prototipo.

Para ECMAScript es un tipo de referencia, prototipo es para ellos guardar todos los casos en los que los métodos reales. Tal como toString () y valueOf () métodos se almacenan realmente en el nombre de prototipo, pero cada instancia de acceso al objeto por Bale.

Cuando se crea un tipo de referencia personalizados y herencia, la propiedad prototipo es extremadamente importante. (Detalle en el capítulo 6)

En el ECMAScript5, propiedad prototipo no es numerable, el uso de for-in no puede ser encontrado.

apply () y llame al ()

Cada función contiene dos métodos de no hereditaria: aplicar () y call (). El uso de estos dos métodos se llama efecto de dominio específico función , igual sustancialmente al valor establecido de esta función objeto in vivo.

En primer lugar, Aplicar () método toma dos parámetros: un ámbito en el que la función está en funcionamiento, el otro es una matriz de parámetros. En el que el segundo parámetro es una instancia de Array, argumentos pueden ser objetos. Por ejemplo:

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

function callSum1(num1,num2){  //传入arguments对象
    return sum.apply(this,arguments)
}

function callSum2(num1,num2){
    return sum.apply(this,[num1,num2])  //传入数组
}

alert(callSum1(10,10))  //20
alert(callSum2(10,10))  //20

En este ejemplo, callSum1 () se introdujo a esto como este valor al realizar la función () suma (porque llama alcance mundial, que se transmite en el objeto de la ventana), y el objeto de los argumentos.

método call () con la misma función se aplica () método de la realización difieren sólo acepta parámetros. call () primero parámetro del método es el valor de esta diferencia es que los parámetros restantes se pasan directamente a la función. Que se pasa a la función debe aparecer de forma individual. Ejemplos:

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

function callSum1(num1,num2){  //传入arguments对象
    return sum.call(this,num1,num2)
}

alert(callSum1(10,10))  //20

Ellos realmente potente lugar para poder ampliar la función a ejecutar un ámbito, la ventaja es que no hay una relación de acoplamiento entre los objetos y los métodos no es necesario. Ejemplos:

window.color = "red"
var o = {color:"blue"}
function sayColor(){
    alert(this.color)
}
sayColor()  //red
sayColor.call(this)  //red
sayColor.call(window)  //red
sayColor.call(o)  //blue

enlazar()

Este método crea una instancia de una función, que está unido al valor de este valor se pasa a la función bind (). Ejemplos:

window.color = "red"
var o = {color:"blue"}
function sayColor(){
    alert(this.color)
}
var objectSayColor = sayColor.bind(o)
objectSayColor()  //blue

Aquí, sayColor () llamada a bind () y pase el objeto, la creación de una función objectSayColor (). objectSayColor () esta función es igual al valor de o, lo que incluso llamar a esta función en el ámbito global, también verá el "azul".

métodos heredados

Método toLocaleString () y toString () siempre devuelve un código de función.

Complementarios: toString () devuelve el método del código de función en sí, y anotaciones anteriores espacios en blanco se omitirá. ES6 no arranca

Supongo que te gusta

Origin www.cnblogs.com/L-xmin/p/12587583.html
Recomendado
Clasificación