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
这是为什么
展开
 我来答
白狐仙人
推荐于2016-04-10 · TA获得超过1236个赞
知道小有建树答主
回答量:830
采纳率:0%
帮助的人:707万
展开全部
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");
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式