2015-10-07 68 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