El alcance de las funciones y este punto son partes muy importantes de JS. Se necesita una lógica para aclarar esto y ver cómo es mi lógica ...
A continuación se muestra un esquema que puede seleccionar directamente los elementos que le interesan leer.
• Método de definición de función: definición directa (en ventana, definición interna), métodos de objeto, métodos prototipo de objeto;
• Método de llamadas de funciones: llame directamente, llame/aplique, con
• Para los métodos de funciones y objetos directamente definidos, el alcance es la cadena de alcance en su definición de forma predeterminada.
• Para funciones directamente definidas, esto apunta a la ventana.
• Para el método del objeto, esto apunta al objeto instanciado (correspondiente al caso donde el objeto instanciado devuelve esto por defecto).
• Usar llamadas/aplicar para cambiar este punto del método
• Al definir una función o método, su cadena de alcance se puede cambiar con con.
Hablemos de ello en detalle a continuación:
La definición de funciones, como se menciona en el esquema, se puede dividir en dos tipos: definición directa (en ventana, definición interna), métodos de objeto (u métodos prototipo de objeto). A partir del siguiente código de ejemplo, puede ver que la función FN1 y FN2 y la dofunción del método del objeto provienen del dominio correspondiente cuando la función usa el nombre.
var name = 'Name Under Window <br/>'; var resultenCon; function fn1 () {resultcon.innerhtml += name;} function myobj () {var name = 'name en myobj <br/>'; this.dofunction = function () {resultcon.innerhtml += name;¿Qué sucede si "Nombre" se reemplaza por "this.name" cuando se usa el valor del nombre? Vea el siguiente ejemplo:
var name = 'Name Under Window <br/>'; var resultenCon; function fn1 () {resultcon.innerhtml += this.name;} function myobj () {var name = 'name en myobj <br/>'; this.dofunction = function () {resultcon.innerhtml += this.name;A juzgar por los resultados, podemos verificar los elementos 4 y quinto en el esquema. También podemos ver que este y el alcance son dos conjuntos de cadenas separados, siguiendo una lógica de consulta variable independiente. La lógica de consulta específica se mencionará en el siguiente análisis de rendimiento. Si eres un novato, se recomienda primero mirar el conocimiento básico de la "cadena de alcance JS".
Con respecto al método de llamadas de una función, utilizo el siguiente ejemplo para ilustrar el segundo y sexto artículo en el esquema:
var name = 'Name Under Window <br/>'; var resultenCon; function fn1 () {resultcon.innerhtml += this.name;} function myobj () {var name = 'name en myobj <br/>'; this.dofunction = function () {resultcon.innerhtml += this.name;El uso de llamadas y aplicar cuando se les llame es cambiar este punto de la función llamada. El uso de con es cambiar el dominio de consulta de la variable en la función llamada. Eliminamos la llamada y el nombre en el ejemplo anterior y agregamos para demostrar la función de con.
var name = 'Nombre en la ventana <BR/>'; var resultenCon; function fn1 (myscope) {con (myscope) {resultcon.innerhtml += name; }} función myobj (myscope) {var name = 'name en myobj <br/>';No es conveniente usarlo y debe agregar a la función llamada. Algunas personas pueden preguntarse si puede llamar a lo siguiente para cambiar el alcance de la variable en su conjunto sin cambiar la función llamada.
con (myscope) {fn1 (); fn2 (); var obj = new myobj (); obj.dofunction ();}¡Desafortunadamente, no! Por lo tanto, la llamada y la aplicación se pueden usar en todas partes en algunos marcos maduros, pero rara vez se usa. Cuando se usa Jshint para detectar la sintaxis JS, se marcan pequeños puntos rojos con con. En alguna guía de codificación de JS, también se recomienda usar con la menor cantidad posible de cambios en la cadena de consulta predeterminada de variables, confundirá al personal de mantenimiento posterior y algunas consideraciones de rendimiento. Úselo con con con con con precaución.
El artículo anterior comprende profundamente el alcance y esta dirección de las funciones JS es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.