繁体   English   中英

如何在对象方法中选择JavaScript对象数组

[英]How do I select a JavaScript Object Array within an Object Method

如何从我的randomImage.imagePicker方法中选择randomImage.images数组中的字符串?

(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

})()

我在控制台中收到以下错误:

未捕获的TypeError:无法读取未定义的属性“图像”

或者,如果您想指定要获取的randomImage的索引,请执行以下操作:

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

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

我在控制台中收到以下错误: 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]);
}

如果您只希望它从images数组返回随机图像:

演示

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];
}

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变量不可用!

在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM