1

在迭代包含不同类型对象的数组时,我在访问对象的方法时遇到问题。两种类型的对象都定义了特定的方法,但我得到的是带有解释的 TypeError:“对象 0 没有方法‘更新’”。我将对象放入数组中的顺序无关紧要。我对 js 相当陌生,所以可能我基于其他语言做了一些不正确的推理......我在 Chrome 中对其进行了测试。

(function(){
    function Camera(){
        this.bar = "bar";
    };

    Camera.prototype.update = function(){
        this.bar +="bar";
    }

    function Object(){
        this.foo = "foo";
    };

    Object.prototype.update = function(){
        this.foo+="foo";
    }

    var camera = new Camera();
    var object = new Object();

    var array = [camera, object];

    for(o in array){
        o.update();
    }


})();
4

2 回答 2

2

如果使用o in arraytheno指的是数组元素的索引。尝试这个:

for (var i = 0; i < array.length; i++) {
  array[i].update()
}

FIDDLE DEMO
有关操作员的更多信息for ... in,请查看文档

于 2013-04-12T06:02:03.750 回答
0

您不能像 Evan Trimboli 所说的那样使用 .update ,因为它是 Element 的一种方法。将其重命名为其他名称,它将起作用。

于 2013-04-12T06:11:47.167 回答