1

さまざまなタイプのオブジェクトを含む配列を反復処理しているときに、オブジェクトのメソッドにアクセスする際に問題が発生しています。どちらのタイプのオブジェクトにも特定のメソッドが定義されていますが、「オブジェクト 0 にはメソッド 'update' がありません」という説明付きの TypeError が表示されます。オブジェクトを配列に入れる順序は関係ありません。私は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 arrayoこれを試して:

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

FIDDLE DEMO
opeartor の詳細についてfor ... inは、ドキュメントを参照してください。

于 2013-04-12T06:02:03.750 に答える