我正在尝试访问 obj 内的数组,但在该对象的相同范围内

I'm Trying to access an array inside an obj but while in the same scope of that object

let imageObj = {
  imgArr: [
    'dead_battery.jpg', 'evolution.jpg', 'funny_cat_pic.jpg',
    'funny_paper_guys.jpg', 'happy_image', 'wood_garden.jpg'
  ],
  currentImg: 0,
  changeImage: (image) => {
    imageCycle = setInterval((image) => {
        let counter = 0;
        let randomNum = Math.floor(Math.random() * 6);
        image.src = `/images/${imgArr[randomNum]}`;
        console.log('Times Ran: ', counter);
      },
      3000);
  },
  stopImage: (terminate) => {
    if (terminate) clearInterval(imageCycle);
    console.log('INTERVAL STOPPED');
    console.log(imgArr[3]);
  },
  imageCycle: undefined
}

使用imgArr 将不起作用,因为imgArr 不是变量,而是imageObj 对象的属性。您可以使用 imageObj.imgArr 访问函数内部的数组。

代码:

let imageObj = {
  imgArr: [
    'dead_battery.jpg', 'evolution.jpg', 'funny_cat_pic.jpg',
    'funny_paper_guys.jpg', 'happy_image', 'wood_garden.jpg'
  ],
  currentImg: 0,
  changeImage: (image) => {
    imageObj.imageCycle = setInterval(() => {
      let counter = 0;
      let randomNum = Math.floor(Math.random() * 6);
      image.src = '/images/' + imageObj.imgArr[randomNum];
      console.log('Times Ran: ', counter);
    },
    3000);
  },
  stopImage: (terminate) => {
    if (terminate) clearInterval(imageObj.imageCycle);
    console.log('INTERVAL STOPPED');
    console.log(imageObj.imgArr[3]);
  },
  imageCycle: undefined
}

即使 Angel Politis 的回答是正确的,另一种访问对象属性的方法是 而不是 使用箭头函数来定义你的函数,而是使用 function 关键字,然后使用 this.

引用所需的 属性

这会起作用

let obj = {
    arr: ["one", "two"],
    run: function() {
      console.log(this.arr);
    }
}
obj.run();

但这行不通

let obj = {
    arr: ["one", "two"],
    run: () => {
      console.log(this.arr);
    }
}
obj.run();

因此只需将箭头函数更改为 function 并使用 this 引用对象,它应该会按预期工作。