在javascript中访问类外的函数

时间:2012-10-04 10:05:56

标签: javascript jquery oop

我的班级结构是这样的:

var jpTWUI = function(id, connection){
    this.id = id;
    this.muteButton = "#mute";
    this.hangupButton = "#hang";
    this.transferButton = "#trans";
    this.parentElement = jQuery('#timerCon');
    this.connection = connection;

    this.interval = "";

    this.createElements();
    this.addEvents(); 
};

jpTWUI.prototype = { 
    createElements: function(){ ... }, 
    addEvents: function(){...}, 
    startTimer: function(){...}
}

现在我创建了一个对象,并将类称为

var callHandler = new jpTWUI('timerCon', connection);
callHandler.startTimer();

但问题是方法startTimer具有setInterval功能,以分钟和秒显示持续时间。

我想再实施一个像stopTimer这样的方法来停止startTimer的间隔,我知道我必须使用window.clearInterval。但是当我在同一个类中实现函数stopTimer时,我不知道如何使用类来访问该方法:

var callHandler = new jpTWUI('timerCon', device);
callHandler.stopTimer();

希望你们明白我想要实现的目标,这是我第一次在javascript中使用这个类..

请指导我这种做法是否正确? 或者我如何使其正确..

3 个答案:

答案 0 :(得分:1)

修改后的代码。在setIntervalConst中保存setInterval的返回值并使用clearInterval。 您应该在调用startTimer和stopTimer时使用相同的jpTWUI实例。

var callHandler = new jpTWUI('timerCon', connection);
callHandler.startTimer();

///var callHandler = new jpTWUI('timerCon', device); // remove this line if you want access same instance of jpTWUI.
callHandler.stopTimer();

jpTWUI.prototype = { 
    createElements: function(){ ... }, 
    addEvents: function(){...}, 
    setIntervalConst: 0,
    startTimer: function(){ this.setIntervalConst = setInterval(....) ....},
    stoptTimer: function(){ clearInterval(this.setIntervalConst ); ....}
}

答案 1 :(得分:0)

在创建和清除时获取ID。

this.interval = setInterval(function(){..}, 1000)
clearInterval(this.interval );

这有助于你的问题吗?

答案 2 :(得分:0)

setInterval会返回一个标识符,您可以将其传递给clearInterval以停止计时器,因此您可以执行以下操作:

jpTWUI.prototype = { 
    …
    startTimer: function(){
        this.timer = setInterval(function(){
            console.log("interval")
        },2000) // every 2 seconds
    },
    stopTimer: function(){
        if(this.timer){
            clearInterval(this.timer);
        }
    }
}