"未捕获的TypeError:对象0没有方法'更新'"迭代数组时

时间:2013-04-12 05:56:43

标签: javascript

在迭代包含不同类型对象的数组时,我遇到访问对象方法的问题。两种类型的对象都定义了特定的方法,但我得到的是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();
    }


})();

2 个答案:

答案 0 :(得分:2)

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

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

FIDDLE DEMO
有关for ... in opeartor的更多信息,请查看documentation

答案 1 :(得分:0)

你不能像Evan Trimboli那样使用.update,因为它是Element的一种方法。将其重命名为其他内容并且它将起作用。