2015-10-07 65 views
0

如何從我的randomImage.imagePicker方法中選擇randomImage.images數組中的字符串?如何在對象方法中選擇JavaScript對象數組

(function() { 

var randomImage = { 

     images : [ 
       'http://placehold.it/100x100', 
       'http://placehold.it/200x200', 
       'http://placehold.it/300x300', 
       'http://placehold.it/400x400' 
       ],//images Array 
     imagePicker : function() { 
       return console.log(randomImage.images[2]); 
       }()//imagePicker Method 

}//randomImage Object 

})() 

我得到以下錯誤在控制檯:

Uncaught TypeError: Cannot read property 'images' of undefined

+2

完全一樣的。 'randomImage.images [2]'訪問數組中的第三個元素。不確定你的問題是什麼? –

回答

1

I get the following error in the console: Uncaught TypeError: Cannot read property 'images' of undefined

的問題是,你的函數定義後,有()

imagePicker : function() { 
    return console.log(randomImage.images[2]); 
}()//imagePicker Method 
^^ 

這將立即撥打的功能和它的返回值賦給imagePicker。但此時randomImage尚未初始化。它的值仍然是undefined,這就是爲什麼你得到這個錯誤。

刪除分配的功能本身括號(我認爲這是你想要做什麼):

imagePicker : function() { 
    return console.log(randomImage.images[2]); 
} 
+0

解決了它。 –

0

只要你只是希望它從images陣列返回隨機圖像:

DEMO

imagePicker : function() { 
    var index = Math.floor(Math.random() * randomImage.images.length); 
    return randomImage.images[index]; 
} 

只需使用索引即可完成特定圖像的返回:

imagePicker : function() { 
    // index 0 returns 'http://placehold.it/100x100' 
    return randomImage.images[0]; 
} 
1

或者,如果你想指定randomImage的索引你想:

imagePicker : function (idx) { 
    return randomImage.images[idx]; 
} 

randomImage.imagePicker(1)將返回http://placehold.it/200x200

+0

randomImage.imagePicker(1)實際上並沒有像在函數範圍中定義的那樣在外部工作! –

0

this是魔語:

(function() { 

    var randomImage = { 

      images : [ 
        'http://placehold.it/100x100', 
        'http://placehold.it/200x200', 
        'http://placehold.it/300x300', 
        'http://placehold.it/400x400' 
        ],//images Array 
      imagePicker : function() { 
        alert(this.images[2]); 
        }//imagePicker Method 

    }//randomImage Object 

    randomImage.imagePicker(); 

})(); 

請注意,randomImage變量在自動功能之外不可用!

小提琴here