javascript写面向对象要执行作为参数的匿名函数遇到问题!
//整个函数作用是改变一个元素的CSS样式,之前已封好用过ok,现在想改成一个原型使用;如下:functionchange(obj,json,callfn)//obj是要...
//整个函数作用是改变一个元素的CSS样式,之前已封好用过ok,现在想改成一个原型使用;如下:
function change (obj,json,callfn)
//obj是要改变的元素参数,json是obj要改变的多个属性参数如{}格式,callfn是改变后再执行的匿名函数(问:如有需要起个名也行,我要调用它);
{
var _this=this;
if(obj.timer)
clearinterval(obj.timer);
obj.timer=setInterval(function ()
{_this.changeObj(obj,json); //这部分单独测没问题;
callfn; //问:这里该怎么写,这个匿名函数内我又new了一个change(不同赋值)出来;
},30);
};
change.proto.changeObj=function()
{
//省了......
};
修正proto应是prototype 展开
function change (obj,json,callfn)
//obj是要改变的元素参数,json是obj要改变的多个属性参数如{}格式,callfn是改变后再执行的匿名函数(问:如有需要起个名也行,我要调用它);
{
var _this=this;
if(obj.timer)
clearinterval(obj.timer);
obj.timer=setInterval(function ()
{_this.changeObj(obj,json); //这部分单独测没问题;
callfn; //问:这里该怎么写,这个匿名函数内我又new了一个change(不同赋值)出来;
},30);
};
change.proto.changeObj=function()
{
//省了......
};
修正proto应是prototype 展开
展开全部
这个匿名函数内我又new了一个change(不同赋值)出来;//这里不是太明白。是里面还有一个名叫change的函数吗?如果那个函数只在callfn中使用,应该问题不大。但尽量用不同名称吧。
调用callfn用:callfn();
如果有参数或者属于某个对象,可以用call或apply
callfun.call(change,arg1,arg2,...) //第一个参数是调用的对象,后面是callfn的参数,可以多个,如果没有参数,可以不写。
callfun.apply(change,[arg1,arg2,...]) //第一个参数是调用的对象,第二个参数是数组,里面每个元素都是参数。
这样你可以在callfun中,通过this,访问到change的方法,也许就不用new了。
调用callfn用:callfn();
如果有参数或者属于某个对象,可以用call或apply
callfun.call(change,arg1,arg2,...) //第一个参数是调用的对象,后面是callfn的参数,可以多个,如果没有参数,可以不写。
callfun.apply(change,[arg1,arg2,...]) //第一个参数是调用的对象,第二个参数是数组,里面每个元素都是参数。
这样你可以在callfun中,通过this,访问到change的方法,也许就不用new了。
更多追问追答
追问
callfn()我理解也是,但它报说不是个函数,方便的话我抠抠是408531713,您的也行
追答
我试过是可以的,不知道是不是你调用的时候有什么问题。试试在change函数开始的时候console.log(callfn)看输出什么。在callfn调用前再输出,理论应该显示函数体。
展开全部
function change (obj,json,callfn)
{
var _this=this;
if(obj.timer)
clearinterval(obj.timer);
obj.timer = setInterval( function()
{
_this.changeObj(obj,json);
//此处调用
callfn();
},30);
};
不知道这是不是你说的意思, 如果只是简单的需要调用回调函数就在函数后面加小括号就行了, 如果还有其他问题, 请追问
追问
callfn()我理解也是,但它报说不是个函数,方便的话我抠抠408531713,我发原始的,太对不起:采纳错,不过都出力了,算了吧,对不起了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询