トップ «前の日記(2005-10-11) 最新 次の日記(2005-10-15)» 編集

活動日誌


2005-10-14

[JavaScript] Timer クラス

JavaScript で setInterval をラップする Timer クラスを書いてみました。(似たコードが大量に書かれてそうですが)

function Timer(obj, funcname){
    this.interval = 1;
    this._timer_id = null;
    this._obj = obj;
    this._funcname = funcname;
}

Timer.prototype.start = function(){
    if(!this._timer_id){
        var self = this;
        this._timer_id = setInterval(function(){ self._obj[self._funcname](); }, this.interval);
    }
}

Timer.prototype.stop = function(){
    if(this._timer_id){
        clearInterval(this._timer_id);
        this._timer_id = null;
    }
}

Timer.prototype.isRunning = function(){
    return this._timer_id ? true : false;
}

というクラスで

var t = new Timer(obj, 'func');
t.start();

と書けます。

new Timer(obj.func) のように書きたかったのですが、どうしてもうまく動かすことができなかったため (obj.func 内の this が変なところを指してしまう)、このようなコンストラクタになってます。 うまい方法ないかなぁ。


2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2005-10-11) 最新 次の日記(2005-10-15)»