Este ejemplo describe el uso de la función JS esto. Compártelo para su referencia. Los detalles son los siguientes:
Al escribir funciones en JS, esto se usa mucho. ¿Qué es exactamente esto? Esta es una palabra clave, un puntero, que señala el alcance del entorno de ejecución, también llamado contexto.
Hablemos primero de las funciones. Personalmente, entiendo que las funciones son bloques de código que se llaman repetidamente en el idioma.
En JS, cuando se asigna una función a las propiedades de un objeto, se llama método
como:
var m = {}; m.title = 'title'; m.show = function () {alert (this.title)} m.show ()Es llamar a la función como el método del objeto m
En este caso, esto apunta al objeto m.
El nombre de la función de llamada directa se llama función:
var a = 1212; función show () {alerta (a) // 1212} show () // 1212En un entorno global, las variables globales pueden entenderse como propiedades de la ventana, y las funciones globales son métodos de ventana
Vea el siguiente ejemplo:
var m = {}; m.id = 'mmm'; m.show = function () {alert (this.id);} var a = {}; a.id = 'aaa'; a.show = m.show; a.show (); //aaaa.show=m.show; Comprenda esta oración primero, porque una función es un objeto, m.show = function () {alerta (this.id)}Esta expresión es equivalente a referirse a A.Show y M.Show al mismo tiempo
function () {alerta (this.id)}Realmente equivalente a
a.show = function () {alerta (this.id)}Entonces, cuando se llama a A.show (), esto apunta a un objeto A,
Mira la siguiente castaña
var m = {}; m.id = 'mmm'm.show = function () {alerta (this.id)} var a = {} a.id =' aaa'a.show = function () {m.show ()}; a.show (); // mmmmEntonces, al llamar a A.Show (), es equivalente a llamar al método de M.Show (), así que esto. apunta a un objeto m.
Mira el siguiente ejemplo, todavía no lo entendí mucho al principio
var color = 'rojo'; var app = {}; app.color = "verde"; app.paint = function (node) {node.style.color = this.color; alerta (this.color);} function findNode (llamado) {var btn = document.queryselector ('. Btn'); devolución de llamada (btn); // pasar,} findNode (app.paint); alerta (this.color); // rojo en lugar de verdeCuando una función pasa argumento, pasa argumentos de acuerdo con el valor, no las referencias
Entonces, cuando findNode (app.paint); se transmite, en realidad es
función (nodo) {node.style.color = this.color; alerta (this.color);}, Debido a que FindNode se define globalmente, esto apunta a la ventana o indefinido;
Sobre los parámetros que pasan, pasando los valores
FUNCIÓN SHOW (a) {alerta (a)}Es fácil de entender cuándo los parámetros son tipos de datos básicos
var b = 10; show (b) // alerta (10);
En cuanto al objeto
var c = {}; c.prop = true; var showProp = function (obj) {obj.prop = false} showprop (c); //c.prop=falseAlgunas personas piensan que el ejemplo anterior es pasar parámetros de acuerdo con la referencia.
De hecho, lo anterior sigue pasando parámetros de acuerdo con el valor. Cuando ShowProp (c) pasa C a la función, C es realmente equivalente a una referencia. La función tiene obj.prop = false, que es equivalente a cambiar el objeto referenciado a {Prop: False}
Mira el siguiente ejemplo
var c = {}; c.prop = true; var showProp = function (obj) {obj = new Object (); obj.prop = false return obj;} showProp (c); alerta (c.prop); //verdaderoAquí, el OBJ entrante ha sido modificado. Si pasa parámetros de acuerdo con la función por referencia, las modificaciones dentro de la función definitivamente se reflejarán fuera.
Espero que este artículo sea útil para la programación de JavaScript de todos.