Javascript 手柄';这';事件内侦听器
但是在Javascript 手柄';这';事件内侦听器,javascript,javascript-events,Javascript,Javascript Events,但是在onclick中,这个绑定到映射。我希望它绑定到Foo的实例。 请注意,我不能将匿名函数用作addEvent的第二个参数,因为我以后需要删除侦听器。这应该会给出您想要的结果。通过在匿名函数中创建对象,可以获得对它的引用 function Foo(map){ this.map = map; } Foo.prototype = { onclick: function(e){ this.bar(e.point); }, bar: funct
onclick
中,这个
绑定到映射
。我希望它绑定到Foo
的实例。请注意,我不能将匿名函数用作
addEvent
的第二个参数,因为我以后需要删除侦听器。这应该会给出您想要的结果。通过在匿名函数中创建对象,可以获得对它的引用
function Foo(map){
this.map = map;
}
Foo.prototype = {
onclick: function(e){
this.bar(e.point);
},
bar: function(point){
// do something with point
},
start: function(){
this.map.addEvent("click", this.onclick);
},
stop: function(){
this.map.removeEvent("click", this.onclick);
}
};
示例-(忽略警报的内容,重要的是它到达了那里!)这应该会给出您想要的结果。通过在匿名函数中创建对象,可以获得对它的引用
function Foo(map){
this.map = map;
}
Foo.prototype = {
onclick: function(e){
this.bar(e.point);
},
bar: function(point){
// do something with point
},
start: function(){
this.map.addEvent("click", this.onclick);
},
stop: function(){
this.map.removeEvent("click", this.onclick);
}
};
示例-(忽略警报的内容,重要的是它到达了那里!)在start()
中,创建一个通过本地别名引用外部对象的闭包:
Foo.prototype = (function() {
var f = { }
f.onclick = function(e){
f.bar(e.point);
};
f.bar = function(point){
// do something with point
};
f.start = function(){
this.map.addEvent("click", f.onclick);
};
f.stop = function(){
this.map.removeEvent("click", f.onclick);
};
return f;
})();
在start()
中,创建通过本地别名引用外部对象的闭包:
Foo.prototype = (function() {
var f = { }
f.onclick = function(e){
f.bar(e.point);
};
f.bar = function(point){
// do something with point
};
f.start = function(){
this.map.addEvent("click", f.onclick);
};
f.stop = function(){
this.map.removeEvent("click", f.onclick);
};
return f;
})();
您可以更改调用事件处理程序的方式。例如(如果使用jQuery):
您可以更改调用事件处理程序的方式。例如(如果使用jQuery):
这个答案与Richard D的答案类似,但由于我们希望原型返回一个新对象,我们可以将其初始化为一个:
$("foo").click((function () {
var fooObject = new Foo;
return function (evt) {
fooObject.onclick.call(fooObject, evt);
};
}()));
这个答案与Richard D的答案类似,但由于我们希望原型返回一个新对象,我们可以将其初始化为一个:
$("foo").click((function () {
var fooObject = new Foo;
return function (evt) {
fooObject.onclick.call(fooObject, evt);
};
}()));
start
中的this
是否仍然引用Foo
的实例?@wong2是的,它似乎是-单击在两个分区上都能正确工作中的this
仍然引用Foo
的实例?@wong2是的,它似乎是-单击在两个分区上都能正确工作