Javascript'te olay işleyicilerinde aşağıdaki sorun var. Benim gibi bir mousemove olay işleyicisi olan bir nesne var.Global Javascript Olay İşleme Nesne Bağlamı
function MyObject(){ }
function MyObject.prototype = {
currentMousePosition: null,
onMouseMove: function(ev){
this.currentMousePosition = this.getCoordinates(ev);
},
getCoordinates: function(ev){
if (ev.pageX || ev.pageY)
return { x: ev.pageX, y: ev.pageY };
return { x: ev.clientX + document.body.scrollLeft - document.body.clientLeft, y: ev.clientY + document.body.scrollTop - document.body.clientTop };
}
};
Çözmeyi denediğim sorun, nesne bağlamında giderir. OnMouseMove işlevimde, currentMousePosition özelliğini atar. Doğal olarak bu işe yaramaz çünkü mousemove olayını işleyen statik bir işlev.
Aradığım şey, olay işleyicim ile bir nesne bağlamını geçiren bir teknik/yöntem. Düşünebildiğim en iyi örnek, Google Maps API işlevi GEvent.bind() Bununla birlikte, nesneyi belirtilen olayda yanmak istediğiniz işleve iletebilirsiniz. Ben aslında aynı şeyi arıyorum. (Herhangi bir başka
element.onmousemove= myobject.onMouseMove.bind(myobject);
:
var myobject= new MyObject();
element.onmousemove= function() {
myobject.onMouseMove();
};
Ama gelecekte, ECMAScript Beşinci Baskı yöntemiyle function.bind
ile yapacağım:
Bu harika bir başlangıç, teşekkürler edilmektedir! – Matt