js 面向对象 对象的方法调用对象属性不成功?
<divstyle="border:1pxsolid#000000;width:100px;height:100px;"id="testdiv">123</div><sc...
<div style="border: 1px solid #000000; width:100px; height:100px; " id="testdiv" >123</div>
<script type="text/javascript">
function move2() {
this.is = false;
this.myObj;
this.startMove = function(evt) {
if (this.is == true)
alert('a');
if (this == document.getElementById('testdiv'))
alert("s");
}
this.init = function(obj) {
this.myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
this.is = true;
this.myObj.onmousedown = this.startMove; // 鼠标按下事件。
}
}
var mo = new move2();
mo.init("testdiv");
</script>
结果出来的是S
这是为什么 展开
<script type="text/javascript">
function move2() {
this.is = false;
this.myObj;
this.startMove = function(evt) {
if (this.is == true)
alert('a');
if (this == document.getElementById('testdiv'))
alert("s");
}
this.init = function(obj) {
this.myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
this.is = true;
this.myObj.onmousedown = this.startMove; // 鼠标按下事件。
}
}
var mo = new move2();
mo.init("testdiv");
</script>
结果出来的是S
这是为什么 展开
1个回答
展开全部
this.startMove = function(evt) {
if (this.is == true)
alert('a');
if (this == document.getElementById('testdiv'))
alert("s");
}
你自己都写了this == document.getElementById('testdiv')
你在init方法里面绑定了onmousedown 方法,也没有做出改变,那么this肯定是指向this.myObj
this.is其实就是this.myObj.is,那肯定是undefined
所以如果你的is如果不是类外面需要用的话,可以直接封装起来
如下
function move2() {
var is = false;//不用this.is,直接var is
this.myObj;
//如果外部需要用到is,直接给move添加一个方法this.getIS = function(){return is; }就好了
this.getIS = function(){return is; };
this.startMove = function(evt) {
if (is == true)
alert('a');
if (this == document.getElementById('testdiv'))
alert("s");
}
this.init = function(obj) {
this.myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
is = true;
this.myObj.onmousedown = this.startMove; // 鼠标按下事件。
}
}
var mo = new move2();
mo.init("testdiv");
if (this.is == true)
alert('a');
if (this == document.getElementById('testdiv'))
alert("s");
}
你自己都写了this == document.getElementById('testdiv')
你在init方法里面绑定了onmousedown 方法,也没有做出改变,那么this肯定是指向this.myObj
this.is其实就是this.myObj.is,那肯定是undefined
所以如果你的is如果不是类外面需要用的话,可以直接封装起来
如下
function move2() {
var is = false;//不用this.is,直接var is
this.myObj;
//如果外部需要用到is,直接给move添加一个方法this.getIS = function(){return is; }就好了
this.getIS = function(){return is; };
this.startMove = function(evt) {
if (is == true)
alert('a');
if (this == document.getElementById('testdiv'))
alert("s");
}
this.init = function(obj) {
this.myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
is = true;
this.myObj.onmousedown = this.startMove; // 鼠标按下事件。
}
}
var mo = new move2();
mo.init("testdiv");
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询