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
}
答案 0 :(得分:1)
使用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
}
答案 1 :(得分:0)
即使Angel Politis的答案在他所说的内容中是正确的,仍然可以通过不使用箭头函数来定义您的函数,而是使用{{1 }}关键字然后使用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
引用对象,它就可以按预期工作。