js中,元素对象的一个方法绑定了一个事件函数fn,但fn中的this指针却是window,其他浏览器正常,如何解决
原因:想写个自己的库,没按jquery中为function添加原型的方法的思路,而是想通过为HTML对象添加内置方法来实现。眼见通过了,再到ie测试,各个版本的都是thi...
原因:想写个自己的库,没按jquery中为function添加原型的方法的思路,而是想通过为HTML对象添加内置方法来实现。眼见通过了,再到ie测试,各个版本的都是this是window
html:有<button id="btn">btn</button>
js:
function myadd(obj,oevt,fn){
if(obj.attachEvent)
return obj.attachEvent('on'+oevt,fn);
else
return obj.addEventListener(oevt,fn,false);
}
function people(id,fn){
var op = document.getElementById(id);
var of = this;
//对象方法
of.click= function(fn){
myadd(op,'click',fn);
}
}
function test(){
alert(this);//IE中是window;其他浏览器正常
}
function $(id,fn){
return new people(id,fn);
}
var p1=new people('btn');
p1.click(test); 展开
html:有<button id="btn">btn</button>
js:
function myadd(obj,oevt,fn){
if(obj.attachEvent)
return obj.attachEvent('on'+oevt,fn);
else
return obj.addEventListener(oevt,fn,false);
}
function people(id,fn){
var op = document.getElementById(id);
var of = this;
//对象方法
of.click= function(fn){
myadd(op,'click',fn);
}
}
function test(){
alert(this);//IE中是window;其他浏览器正常
}
function $(id,fn){
return new people(id,fn);
}
var p1=new people('btn');
p1.click(test); 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询