2016-05-13 2 views
0

私はそのクラスのすべてのインスタンスでクラスのメソッドを呼び出そうとしています。Javascriptでクラスのすべてのインスタンスでメソッドを呼び出しますか?

現在、私は私のクラスのすべてのループのためにこれを使用してクラスChecker()のすべてのインスタンスを通じてcheckers[]

Iループと呼ばれる、配列に格納されている:私は、コードを実行すると

this.drawCheckers = function() { 
    for(var checker in this.checkers) { 
     checker.draw(); 
    } 
} 

を、エラーが表示される: localcheckers.js:57 Uncaught TypeError: checker.draw is not a function

どうすれば修正できますか?チェッカーはチェッカー

あなたのために
this.drawCheckers = function() { 
    for(var i = 0; i < this.checkers.length; i++) { 
     if(this.checkers[i] instanceof Checker) 
      this.checkers[i].draw(); 
    } 
} 
+1

は 'アレイ上for..in'を使用しないでください。しかし、もしあなたがそうしたら、あなたは 'this.checkers [checker] .draw()'と言わなければなりません。これは、 'for..in'ループ(https:// developer)のためです。 mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in)work: 'checker'変数は値ではなくキー/インデックスです。 – nnnnnn

+0

['for of'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of)を使う代わりに、' checker'がインスタンスになります配列内のインデックスではない –

答えて

-1

コールdraw()

あなたがする必要があるのは、プロパティにアクセスしてから描画を呼び出すことです。

this.drawCheckers = function() 
{ 
    for(var checker in this.checkers) { 
     this.checkers[checker].draw(); 
    } 
} 

ここで働くの例を参照してください: https://jsbin.com/fezixaboso/edit?js,console

+0

downvoteの理由は何ですか? – MarkoCen

+1

まだ間違っています。配列上の 'for..in'は、値ではなく変数にインデックスを置きます。 – Tyrsius

0

のインスタンスである場合にのみ、...ループで、チェッカーに格納された値は、this.checkers内のプロパティが、プロパティ名ではありません

関連する問題