日期:2014-05-16  浏览次数:20559 次

js 对象 setInterval 调用该对象的内部方法并把得到的计时器保存在该对象
// JavaScript Document
function auction(inid)
{
var tmpObject = 
{
id : inid,
timer1 : null,//用于更新auctioninfo 及修正本地浏览器延时
timer2 : null,//用于状态倒计时

now : null,//服务器now时间戳
ainfo : null,//从服务器获取的ainfo
curr_price : 0,//竞拍的当前价
action : null,//喊价纪录

auction_join : null,//参与人
auction_join_t : 0,
auction_join_state : false,

loadauctioninfo : function()
{
alert("id:" + this.id);
}
,
init : function(obj)
{
this.loadauctioninfo();
var self = this;
var tmp = '12313';

this.timer1 = setInterval('self.loadauctioninfo()', 3 * 1000);
}


};
return tmpObject;
}



var aobj = auction(1);
aobj.init(aobj);

这样会提示self.loadauctioninfo 不是一个方法...
求解决方法

aobj.timer1 = setInterval('aobj.loadauctioninfo()', 3 * 1000);

这样的写法可以,但是我想封装到对象

------解决方案--------------------
JScript code
function auction(inid)
{
var tmpObject = 
{
id : inid,
timer1 : null,//用于更新auctioninfo 及修正本地浏览器延时
timer2 : null,//用于状态倒计时

now : null,//服务器now时间戳
ainfo : null,//从服务器获取的ainfo
curr_price : 0,//竞拍的当前价
action : null,//喊价纪录

auction_join : null,//参与人
auction_join_t : 0,
auction_join_state : false,

loadauctioninfo : function()
{
alert("id:" + this.id);
}
,
init : function(obj)
{
this.loadauctioninfo();
var self = this;
var tmp = '12313';
var o = this
this.timer1 = setInterval(function(){o.loadauctioninfo()}, 3 * 1000);
}


};
return tmpObject;
}



var aobj = auction(1);
aobj.init(aobj);

------解决方案--------------------
this.timer1 = setInterval('self.loadauctioninfo()', 3 * 1000);

this.timer1 = setInterval(self.loadauctioninfo, 3 * 1000);

请查找一下setInterval的用法,第一个参数为函数与字符串的区别