- 我有一个创建幻灯片的对象。
- 我想在一个页面上显示多张幻灯片
- 我里面有一个幻灯片元素的事件处理程序
- 我希望事件处理程序知道哪个幻灯片对象创建了单击的项目
-
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();
单击已创建的元素幻灯片应该返回
sl1
或
sl2
我解释得好吗?
最佳答案
简短回答,使用:this
。
更长的答案,你想要的是:
slideshow=function(){
/* ... */
var self = this;
f1 = function(event) {
// do stuff with self.
}
}
您需要使用 self
指向 this
的原因是事件处理程序在调用时会更改 this
的含义。但在创建对象时,this
正确引用了正确的对象(幻灯片实例)。我们可以在事件回调期间访问 self 变量的原因是因为它已被闭包捕获。
如果您需要进一步的解释,请随时使用 google 或在 stackoverflow 上搜索上述描述中的任何单词/术语。
关于Javascript 闭包技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654673/