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
展开
 我来答
慕名eib31
2013-10-21 · TA获得超过1923个赞
知道小有建树答主
回答量:1163
采纳率:85%
帮助的人:447万
展开全部
这个匿名函数内我又new了一个change(不同赋值)出来;//这里不是太明白。是里面还有一个名叫change的函数吗?如果那个函数只在callfn中使用,应该问题不大。但尽量用不同名称吧。

调用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调用前再输出,理论应该显示函数体。
ispiders
2013-10-21 · TA获得超过1240个赞
知道小有建树答主
回答量:517
采纳率:80%
帮助的人:204万
展开全部
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,我发原始的,太对不起:采纳错,不过都出力了,算了吧,对不起了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式