在迭代包含不同类型对象的数组时,我遇到访问对象方法的问题。两种类型的对象都定义了特定的方法,但我得到的是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();
}
})();
答案 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的一种方法。将其重命名为其他内容并且它将起作用。