Javascript关闭技术

Dan*_*Dan 0 javascript

  1. 我有一个创建幻灯片的对象.
  2. 我想在页面上有几个幻灯片
  3. 我有一个幻灯片元素的事件处理程序
  4. 我希望事件处理程序知道哪个幻灯片对象创建了一个单击的项目

-

slideshow=function(){

   var g = document.createElement(...);

   ...

   g.onclick = f1;

   f1 = function(slideshow_instance, event) {
      //EXPLAIN ME HOW TO GET THE slideshow_instance
   }

}

var sl1 = new slideshow();
var sl2 = new slideshow();
Run Code Online (Sandbox Code Playgroud)

单击已创建的元素幻灯片应该返回

SL1

要么

SL2

我解释得好吗?

sle*_*man 5

简短的回答,使用:this.

更长的答案,你想要的是:

slideshow=function(){
   /* ... */

   var self = this;    

   f1 = function(event) {
      // do stuff with self.
   }

}
Run Code Online (Sandbox Code Playgroud)

您需要指向this使用的原因self是事件处理程序将更改this它们被调用时的含义.但是在this正确创建对象时,请参考正确的对象(幻灯片放映的实例).我们可以在事件回调期间访问自变量的原因是因为它已被闭包捕获.

如果您需要进一步说明,请随意google或在stackoverflow上搜索上述说明中的任何字/术语.