javascript 怎么用 一个对象内的方法 把事件绑定在 对象内的另一个方法上,用this
2个回答
展开全部
额~先说下问题吧,当你绑定事件后调用其对应的方法时,该方法(你的alert方法)中的this会被解析为将函数作为其方法的对象,确切的说也就是this引用的是document.getElementById(1)这个html元素,所以只要让this引用你的实例对象a就ok了,也就是改变函数的执行环境,这就要用到call或者apply方法。如下:
<script type="text/javascript">
function change(obj,func)//改变函数执行环境
{
return function(){func.apply(obj,arguments);};
}
function obj(){};
obj.prototype={
a:{b:1},
click:function(){
document.getElementById('qq').onclick=change(this,this.alert);
},
alert:function(){alert(this.a.b);}
}
var a=new obj();
a.click();
</script>
<script type="text/javascript">
function change(obj,func)//改变函数执行环境
{
return function(){func.apply(obj,arguments);};
}
function obj(){};
obj.prototype={
a:{b:1},
click:function(){
document.getElementById('qq').onclick=change(this,this.alert);
},
alert:function(){alert(this.a.b);}
}
var a=new obj();
a.click();
</script>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询