apply函数绑定于prototype的回调函数问题? var oo = this;//先定义这个//再修改成这个onComplete: function(){ oo.callback.call(oo) }) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 onComplete: function(){ oo.callback.apply(oo,arguments) } 没有效果,想用匿名函数取代this的指代 initialize: function(pid, d, serv){ var selfobj=this; //<----新定义 this.curSelect = pid; this.curSelValue = -1; this.data = d; this.servlet = serv; this.init(); this.selectOnEvent(); }, init: function(){ alert(selfobj.servlet); //<---- 检测selfobj的有效性,意外的是js异常提示 selfobj未定义 var url = this.servlet; var pars = $H(this.data); var myAjax = new Ajax.Request(url,{ method: 'post', parameters: pars, onComplete: function(){selfobj.callback.apply(selfobj)} //<---- 楼上的写法 //onComplete: this.callback.apply(this,arguments) }); }, callback: function(callbackdata){ alert(callbackdata); var pE=$(this.curSelect); alert(pE); var info=eval(callbackdata.responseText); this.selectinit(pE); for(var i=0;i<info.length;i=i+1) { var e=this.dooption(info[i].nrmc,info[i].nrid); pE.appendChild(e); } },用普通的类构造方法试验下看 写init里,还是原来的异常,alert(callbackdata);报告undefined以下是没有问题的另一种类构造版本,注意所有类的内部方法中对该实例对象的引用都使用了selfobj这样的写法怎么就能运行呢?而且不需要apply绑定prototype的类构造方式使用apply为核心构造返回的,所以它的内部函数就不能在使用apply了?谁能解释下function Despair(pid, d, serv){ var selfobj=this; this.curSelect = pid; this.curSelValue = -1; this.data = d; this.servlet = serv; this.init=function() { var url = this.servlet; var pars = $H(selfobj.data); var myAjax = new Ajax.Request(url,{ method: 'post', parameters: pars, //onComplete: function(){selfobj.callback.apply(selfobj)} onComplete: selfobj.callback }); } this.callback=function(callbackdata) { alert(callbackdata); var pE=$(selfobj.curSelect); alert(pE); var info=eval(callbackdata.responseText); selfobj.selectinit(pE); for(var i=0;i<info.length;i=i+1) { var e=selfobj.dooption(info[i].nrmc,info[i].nrid); pE.appendChild(e); } } ...... ...... this.init(); this.selectOnEvent();} onComplete: function(aa){ oo.callback.call(oo,aa) }这样呢 可以了~aa 参数应该是ajax回调数据的入口,这个onComplete 回调函数的注册不仅要用匿名函数包装,还要使用实例对象引用虽然从底层prototype看不懂原因,不过问题解决的,有时间研究下高人,多谢 用匿名函数是为了用call调用匿名函数的不是Despair所以在匿名函数内的this不是想当然的那个this 求助:利用正则在一个json字符串里每一个对象的字段插入对象名 lightbox插件问题 关于 script src= 统计来路的问题 javascript实现验证码 用YUI TreeView 动态生成一个包含多级子节点的树~~ 大侠们来帮帮忙啊 急~~~~ 网页框架后退 easyui 的 treegrid的官方demo下载下来打开都显示不出数据 急请教:创建TreeView对象。 请问ie6的打印预览命令是什么?(打印是——print). 各位大师,帮忙? 在jsp页面中有关两个submit的问题(急) number(m,n)类型如何验证?
var selfobj=this; //<----新定义
this.curSelect = pid;
this.curSelValue = -1;
this.data = d;
this.servlet = serv; this.init();
this.selectOnEvent();
},
init: function(){
alert(selfobj.servlet); //<---- 检测selfobj的有效性,意外的是js异常提示 selfobj未定义
var url = this.servlet;
var pars = $H(this.data);
var myAjax = new Ajax.Request(url,{
method: 'post',
parameters: pars,
onComplete: function(){selfobj.callback.apply(selfobj)} //<---- 楼上的写法
//onComplete: this.callback.apply(this,arguments)
});
}, callback: function(callbackdata){
alert(callbackdata);
var pE=$(this.curSelect);
alert(pE);
var info=eval(callbackdata.responseText);
this.selectinit(pE);
for(var i=0;i<info.length;i=i+1)
{
var e=this.dooption(info[i].nrmc,info[i].nrid);
pE.appendChild(e);
}
},用普通的类构造方法试验下看
这样的写法怎么就能运行呢?而且不需要apply绑定
prototype的类构造方式使用apply为核心构造返回的,所以它的内部函数就不能在使用apply了?
谁能解释下function Despair(pid, d, serv)
{
var selfobj=this;
this.curSelect = pid;
this.curSelValue = -1;
this.data = d;
this.servlet = serv;
this.init=function()
{
var url = this.servlet;
var pars = $H(selfobj.data);
var myAjax = new Ajax.Request(url,{
method: 'post',
parameters: pars,
//onComplete: function(){selfobj.callback.apply(selfobj)}
onComplete: selfobj.callback
});
}
this.callback=function(callbackdata)
{
alert(callbackdata);
var pE=$(selfobj.curSelect);
alert(pE);
var info=eval(callbackdata.responseText);
selfobj.selectinit(pE);
for(var i=0;i<info.length;i=i+1)
{
var e=selfobj.dooption(info[i].nrmc,info[i].nrid);
pE.appendChild(e);
}
} ......
...... this.init();
this.selectOnEvent();
}
aa 参数应该是ajax回调数据的入口,
这个onComplete 回调函数的注册不仅要用匿名函数包装,还要使用实例对象引用
虽然从底层prototype看不懂原因,不过问题解决的,有时间研究下高人,多谢
调用匿名函数的不是Despair所以在匿名函数内的this不是想当然的那个this