日期:2014-05-16  浏览次数:20441 次

请教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总是指向当前对象。