Если прописать в обработчике console.log(this), то вы увидите, что там не ваш слайдер, а кнопка по которой кликнули.
Можно переписать так:
function Slider(images, prevBtn, nextBtn) {
this.images = images;
var self = this;
// ...
prevBtn.onclick = function () {
hide(self.images[self.i], 19);
self.i--;
// ...
};
}
Другой вариант, использовать в качестве обработчика
стрелочную функцию. Эти функции захватывают контекст в котором были объявлены, а не тот, где были вызваны.
// ...
nextBtn.onclick = () => {
console.log(this.images)
};
// ...
https://jsfiddle.net/06v3j7f3/
И вообще, лучше избегать onclick. Я понимаю, что в первых главах большинства учебников его упоминают, так как по сравнению с addEventListener он кажется милым и пушистым, но вообще это неудобный привет из девяностых, имхо. Достаточно того факта, что вы не можете сделать два разных onclick'а на одной кнопке.
Подкину вам еще пищу для размышлений: что будет, если на странице будет ДВА ваших слайдера? Или больше.