切换上下文
关于事件有一点经常让人感到迷惑,那就是调用事件回调函数时上下文的切换。当使用浏览器内置的addEventListener() 时,上下文从局部变量切换为目标HTML 元素:
- new function(){
- this.appName = "wem";
- document.body.addEventListener("click", function(e){
- // 上下文发生改变,因此appName 是undefined
- alert(this.appName);
- }, false);
- };
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司
要想保持原有的上下文,需要将回调函数包装进一个匿名函数,然后定义一个引用指向它。我们在第1 章已经提到这种模式,即使用代理函数来保持当前的上下文。这在jQuery 中也是一种很常用的模式,包括一个proxy() 函数,只需将指定的上下文传入函数即可:- $("signinForm").submit($.proxy(function(){ /* ... */ }, this));