请教js熟手们一个关于this 指向发生转变,导致对象内部属性取不到的问题
html:
<div id="demoDrag" onmousedown="a.start(event,this)"></div>
js:
<script type="text/javascript">
function tuodong(){
this.start=function(e, el){
this.X=e.clientX
this.Y=e.clientY
document.mousemove=this.draging
}
this.draging=function(e){
alert(this.X)
}
}
a=new tuodong()
</script>
我发现在调用this.draging方法时,this.X此时已经取不到值了,分析了一下原来是document.mousemove原因,this这是指的是document,而不是当前对象了,请问这种情况我该怎么取得this.X的值,难道要把X设置成全局变量吗?
------解决方案--------------------this.draging=function(e){
var a=new start();
alert(a.X)
}
试试这样
------解决方案--------------------<script type="text/javascript">
function tuodong(){
this.start=function(e, el){
this.X=e.clientX
this.Y=e.clientY
var thisX = this.X;
document.mousemove=this.draging
}
this.draging=function(e){
alert(thisX)
}
}
a=new tuodong()
</script>
------解决方案--------------------
this.draging=function(e){
alert(this.X)//this指向的是document
}
试试
JScript code
<script type="text/javascript">
function tuodong(){
var self = this;
this.start=function(e, el){
this.X=e.clientX
this.Y=e.clientY
var thisX = this.X;
document.mousemove=this.draging
}
this.draging=function(e){
alert(self.X);
}
}
a=new tuodong()
</script>
------解决方案--------------------
js里的this总是指向当前对象。