Preserving Context in Event Handler Callbacks: The 'self = this' Technique
In JavaScript, instance methods as event handler callbacks can cause scope changes. As the provided code demonstrates, event bindings require a variable to preserve the calling context, leading to the assignment "var self = this".
While functional, this approach raises concerns about its effectiveness. A more generalized solution addresses the core problem: channeling variables in embedded functions.
In JavaScript, closures allow access to external variables. However, pseudo variables like "this" and "arguments" require careful handling. Assigning them to aliases within the parent function ensures their availability in embedded functions.
Example
To use "this" in embedded functions, assign it to a variable and use the alias instead:
var that = this; function xyz() { // "this" is different here! --- but we don't care! console.log(that); // now it is the right object! function qwe() { // "this" is different here too! --- but we don't care! console.log(that); // it is the right object here too! } ... };
This approach is not limited to "this"; "arguments" requires similar treatment to ensure consistent access in embedded functions.
The above is the detailed content of How Can I Preserve Context in Event Handler Callbacks in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!