在Javascript中调用类的每个实例上的方法?

时间:2016-05-13 23:35:27

标签: javascript

我试图在该类的每个实例上调用一个类'方法。

目前,我将所有类存储在一个名为checkers[]

的数组中

我使用for循环遍历类Checker()的每个实例:

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

当我运行代码时,我收到错误: localcheckers.js:57 Uncaught TypeError: checker.draw is not a function

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

在for ... in循环中,存储在checker中的值不是this.checkers中的属性,而是属性名称。

您需要做的是访问该属性,然后在其上调用draw。

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

请参阅此处的工作示例: https://jsbin.com/fezixaboso/edit?js,console

答案 1 :(得分:-1)

仅当checker是Checker

的实例时才调用draw()
this.drawCheckers = function() {
    for(var i = 0; i < this.checkers.length; i++) {
        if(this.checkers[i] instanceof Checker)
            this.checkers[i].draw();
    }
}