Pensé que esto sería algo que podría fácilmente googlear, pero tal vez no estoy haciendo la pregunta correcta ...
¿Cómo configuro todo lo que se refiere a "esto" en una determinada función de JavaScript?
por ejemplo, como con la mayoría de las funciones de jQuery como:
$(selector).each(function() {
//$(this) gives me access to whatever selector we're on
});
¿Cómo escribo / llamo a mis propias funciones independientes que tienen una referencia apropiada "this" cuando se llama? Yo uso jQuery, así que si hay una forma específica de jQuery de hacerlo, sería ideal.
javascript
jquery
scope
this
usuario126715
fuente
fuente

$.proxyRespuestas:
Los javascripts
.call()y los.apply()métodos le permiten establecer el contexto para una función.Ahora puedes llamar:
Lo cual alertaría
FOO. Al revés, pasarobj_balertaríaBAR!!. La diferencia entre.call()y.apply()es que.call()toma una lista separada por comas si está pasando argumentos a su función y.apply()necesita una matriz.Por lo tanto, puede escribir fácilmente una función
hookutilizando elapply()método Por ejemplo, queremos agregar una función al.css()método jQuerys . Podemos almacenar la referencia de función original, sobrescribir la función con código personalizado y llamar a la función almacenada.Dado que el
argumentsobjeto mágico es una matriz como objeto, simplemente podemos pasarloapply(). De esa forma, garantizamos que todos los parámetros pasan a la función original.fuente
obj_a, por ejemplo, puede crear una copiavar boud_myfunc = myfunc.bind(obj_a)y simplemente llamarbound_myfunc()según sea necesario.Uso
function.call:¿Dónde
thatestá el objeto que deseathisen la función?fuente
functiones una palabra clave reservada; considere actualizar su respuesta para incluir una función con nombre yafunction.call(...)que no es JavaScript válido.jQuery utiliza un
.call(...)método para asignar el nodo actual althisinterior de la función que pasa como parámetro.EDITAR:
No tenga miedo de mirar dentro del código de jQuery cuando tenga dudas, todo está en JavaScript claro y bien documentado.
es decir: la respuesta a esta pregunta está alrededor de la línea 574,
callback.call( object[ name ], name, object[ name ] ) === falsefuente
Puede usar la función de vinculación para establecer el contexto
thisdentro de una función.fuente
Otro ejemplo básico:
No funciona:
Trabajando:
Básicamente: simplemente agregue .bind (this) a su función
fuente