Después de aprender idiomas tradicionales orientados a objetos, como Java C ++, me siento un poco incómodo cuando transfiero a JavaScript, especialmente la llamada función de objeto en JavaScript, que a veces me confunde. Así que simplemente he resuelto algunas cosas conceptuales a continuación para facilitar el aprendizaje y la comprensión, y las explicaré en combinación con algún conocimiento orientado a objetos de Java.
Primero entendamos algunos conceptos:
1. En primer lugar, ¿a qué se refiere el objeto en ECMAScript? Hay 5 tipos de datos simples en ECMAScript: indefinido, nulo, booleano, número, cadena. También hay un tipo de datos complejo, que es objeto.
2. Tipo de referencia: el concepto de clase en Java
Valor de tipo de referencia --- El concepto de objetos en Java
3. Funciones ---- El concepto de métodos en Java
4.var --- declara un operador de una variable. Debido a que la variable JS es de tipo suelto, suelta que se puede usar para guardar cualquier dato. La variable solo se usa para representar un marcador de posición, por lo que la variable no tiene que especificar String, int y solo var. Tenga en cuenta que el objeto se puede declarar con var.
5.Object (), qué es --- El constructor de objeto en java, el constructor de objeto en js.
Objeto
JS puede agregar dinámicamente propiedades y métodos.
Por ejemplo, cree una instancia de objeto
var obj = new Object();
La variable OBJ es el objeto de nuevo objeto ().
Próximo:
var obj = new Object (); obj.name = 'zeng'; obj.age = 12; obj.fun = function () {console.log (this.name+this.age);}Pero esto no es muy encapsulación, por lo que la representación literal de los objetos se usa con mayor frecuencia
var obj = {nombre: 'Zeng', edad: 12, diversión: function () {console.log (this.name+this.age); }} obj.fun (); // Imprimir: Zeng12Acceso a las propiedades del objeto:
1. Use soportes
console.log(obj["name"]);
2. Use puntos, se recomienda usar este método
console.log(obj.name );
función
Las funciones son una parte importante de cualquier idioma. Las funciones se llaman JS. También puede entender que son los métodos Java y las funciones del lenguaje C, de todos modos. Sin embargo, en términos de declaración y uso, las funciones de JS pueden ser muy diferentes.
Un ejemplo de una función:
function divert () {return "ejemplo";} console.log (diversión ()); // Salida: 'Ejemplo'También es posible:
var divertir = function () {return "Crear funciones usando expresiones"}; console.log (diversión ()); // Salida: "Crear funciones usando expresiones"En el ejemplo anterior, notará que la función no tiene nombre de función, solo un nombre de variable divertido, y hay otro al final de la expresión; punto y coma,
Puede entenderlo como una expresión que declara una variable. Declarar otras variables se escribe así:
var name = "Zeng"; // Hay nombres de variables y semicolones
Tomemos un ejemplo con los parámetros:
función divertida () {argumentos de retorno [0] + argumentos [1] + argumentos [2];} console.log (diversión ("esto es", "a", "ejemplo")); // Salida: "Este es un ejemplo"¿No es un poco extraño? En primer lugar, la función que creé no tiene parámetros. Se dan parámetros cuando se llama, y los parámetros se pueden obtener y devolver en la función.
En realidad, aquí debemos señalar que a la función JS no le importa pasar en algunos parámetros, ¡ni le importa qué tipo de parámetros son! ¡La razón es que los parámetros de recepción internos de la función se almacenan en una matriz!
La matriz son los argumentos anteriores. Por supuesto, a la matriz no le importa pasar algunos parámetros. Si hay parámetros, agregaré uno, y si no hay parámetros, lo haré.
Podemos usar esta función como ejemplo:
Sobrecarga de métodos de imitación: use diferentes parámetros para realizar diferentes reacciones
function divert () {if (arguments.length == 1) {return arguments [0]*10; } if (argumentos.length == 2) {return (argumentos [0]+argumentos [1])*10; } return 10;} console.log (diversión (11,111)); // regresa 1220! ! ! !Sin sobrecarga:
El ejemplo anterior es una sobrecarga de funciones de imitación. ¿Por qué necesito imitarlo? Pronto podré crear varias funciones con diferentes parámetros.
función divertida (num1) {return "diversión con solo un parámetro"} function divers (num1, num2) {return "diversión con dos parámetros";} console.log (diversión (11)); // Salida "Diversión con dos parámetros"Se llama claramente una función con un parámetro, pero de hecho se ejecuta con dos parámetros. Razón: JS define dos funciones con el mismo nombre, y el nombre solo pertenece a la función definida más adelante. ! ! Por lo tanto, no hay característica de sobrecarga en JS.
El nombre de la función es un puntero:
var divertir = function (num1, num2) {return num1+num2;}; var new_fun = diversión; diversión = null; // establecer la función en nullConsole.log (new_fun (10,20)); // Salida: 30console.log (diversión (10,20)); // Excepción: la diversión no es una funciónSe puede ver que aunque divertido = nulo; Antes de esto var new_fun = diversión; es decir, el puntero también apuntó a new_fun, por lo que la función new_fun () aún se puede ejecutar, y el cuerpo de la función no está anulado
Las funciones también se pueden usar como valores:
función add (diversión, num) {return divers (num);} función add_10 (num) {return num+10;} console.log (add (add_10,200)); // Salida: 210Se puede explicar de la siguiente manera:
función add (función, parámetro) {function de retorno (parámetro aprobado);}Los argumentos. Callee de la función
Aquí hay un ejemplo recursivo
función divertida (num) {if (num <= 1) {console.log (num); regresar 1; } else {console.log (num); return num * arguments.callee (num-1); }} console.log (diversión (3)); // Salida 6