- - PR -
JavaScript setIntervalについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-11 13:23
下記aクラスのmoveメソッドを、setInterval関数で呼びたいと思っております。
function a(){ function _move(){ alert("MOVE"); } a.prototype.move = _move; } setInterval('????',2000); どうしてもうまくいかないのですが、そもそも不可能なのでしょうか? 呼び出し元はクラス内外問いません。 ご存知の方がおりましたらご教授願います。 | ||||
|
投稿日時: 2006-04-11 13:40
以下、Firexfox1.5で動作しました。
<html> <head> <script type="text/javascript"> function a(){ function _move(){ alert("MOVE"); } a.prototype.move = _move; } </script> </head> <body onload="setInterval('new a().move();',2000);"> </body> </html> aクラスのmoveメソッドとして定義しているので、 そのままインスタンスのmoveメソッドを実行すれば 良いのではないでしょうか。 [ メッセージ編集済み 編集者: 悠 編集日時 2006-04-11 14:00 ] | ||||
|
投稿日時: 2006-04-11 15:32
ちなみに、環境はIEでした。
setInterval('a.move()',2000);" setInterval('move()',2000);" setInterval('a.move',2000);" setInterval('move',2000);" これまで上記のように、いろいろ試していたのですが駄目でした。
setInterval内で、new するのですね。 全く知りませんでした。ご教授ありがとうございます。 外部から newして呼び出すのは理解できました。 ただ、クラス内部から呼び出す場合は、別インスタンスのメソッドを呼ぶ事なるのかなと思います。 下記のように、パラメータでオブジェクト(_param)を渡して、外部からは、action関数を呼び出して、これを操作したいと考えています。 function a(_param){ this.param = _param; function _move(){ alert("MOVE"); this.param.操作; } a.prototype.move = _move; function _action(){ setInterval('new a().move();',2000); } a.prototype.action = _action; } クラス内部からmove()メソッドを呼び出す術はあるのでしょうか? 参考になるサイトをご存知でしたら、よろしくお願いします。 [ メッセージ編集済み 編集者: NV 編集日時 2006-04-11 16:08 ] | ||||
|
投稿日時: 2006-04-12 10:13
以下のように、インスタンス保存用の変数を用意して、
その値からメソッド実行という手段ではだめですか?
インスタンス保存用の変数なしでやるとすれば、手間はかかりますが toSourceメソッドによりインスタンスの値とメソッド定義を取得して実行、 という方法でもいけるかもしれません。 //インスタンスの状態取得 var ins = this.toSource(); //メソッド定義取得 var method = this.move.toSource(); //タイマー起動(moveメソッド内でinsのパラメータ解析し、実行) setInterval('method=' + method + ';method(' + ins + ');',2000); | ||||
|
投稿日時: 2006-04-12 15:41
ご回答ありがとうございます。
やはり、グローバル領域を使用しないと思惑通り行かなそうですね。 各インスタンス毎に独立して動作させたかったので、このような問題に至りました。 アドバイスお礼申し上げます。 [ メッセージ編集済み 編集者: NV 編集日時 2006-04-12 15:45 ] |
1