function getPoint ( id ){
this.point = null
document. getElementById( id ).addEventListener( 'mousemove', function(i) {
this.point = i.clientX - i.target.getBoundingClientRect().left
console.log( 'this is' + this.point)
} , false )
}
test = new getPoint ( 'testID' )
setInterval( function(){console.log( 'instance is' + test.point)}, 100 )
我想从canvasID创建实例并获取该画布内的光标坐标。在这种情况下,console.log说'实例未定义,这是123'但我无法理解为什么test.point未定义'因为我认为' this.point'与' test.point'相同。
请告诉我如何添加' .addEventListener'实例动态。
我希望语法错误很少。
答案 0 :(得分:0)
this
与this
中的getPoint
不同;相反,它将是对元素的引用。
您可以使用变量来记住this
是什么,然后在处理程序中使用它(请参阅下面的self
):
function getPoint ( id ){
var self = this;
self.point = null
document. getElementById( id ).addEventListener( 'mousemove', function(i) {
self.point = i.clientX - i.target.getBoundingClientRect().left
console.log( 'this is' + self.point)
} , false )
}
我的博客上有关this
的更多信息:You must remember this