27. JS с нуля, ваще с нуля (конструктор для слайдера)

Оценить качество материала и подачу материала автором видео:

Front-end

Трудоустройтесь middle front-end разработчиком на React JS (TypeScript) за 12-16 месяцев обучения с ежедневной менторской поддержкой в формате видео 1 на 1 и коммерческими проектами в портфолио

Перейти на курс
Front-end

Back-end

Трудоустройтесь middle back-end разработчиком за 12-16 месяцев обучения с ежедневной менторской поддержкой в формате видео 1 на 1 и коммерческими проектами в портфолио

Перейти на курс
Back-end

Карьерный бустер

Получите коммерческий опыт на реальных стартапах, прокачайте tech & soft навыки, научитесь работать в команде, проходить собеседования и получите первую работу в IT!

Перейти на курс
Карьерный бустер

Основы Front-end

Сделайте первый шаг в IT, освоив базовые знания разработки и научившись создавать небольшие проекты на JavaScript

Перейти на курс
Основы Front-end

Основы Back-end

Сделайте первый шаг в IT, освоив базовые знания разработки. Без опыта. Без математики. Только практика: JavaScript, SQL, Node JS, база данных

Перейти на курс
Основы Back-end

Конструктор для слайдера

Автор конспекта: Стогниева Виктория

1. Что такое конструктор? 🤔

Конструктор – это основной способ создания множества однотипных объектов в JavaScript, обеспечивающий стандартизацию и возможность использования принципов ООП.

2. Способы создания объектов 📦

Литерал объекта 📝

javascript
const obj = {
  name: "John",
  age: 30,
}

Конструктор с оператором new🔧

javascript
function User(name, age) {
  this.name = name
  this.age = age
}
 
const user1 = new User("John", 30)
const user2 = new User("Anna", 25)

3. Принципы ООП 🧩

Инкапсуляция🔒

Это механизм, который позволяет объединять данные и методы, а также скрывать детали реализации.

javascript
var slider1 = sliderFactory.createNewSlider()
var slider2 = sliderFactory.createNewSlider()
 
slider1.start("itk-slider1")
slider2.start("itk-slider2")
💡
Пользователь вызывает slider.start(), не зная о внутренней реализации

Наследование 🧬

Это механизм, который позволяет одному классу (потомку) наследовать свойства и методы другого класса (родителя). Это способствует повторному использованию кода и созданию иерархии классов.

Полиморфизм 🎭

Это возможность объектов разных классов использовать один и тот же интерфейс (методы с одинаковым названием), но при этом реализовывать их по-разному.

4. Создание конструктора в JavaScript ⚙️

index.html
<div class="itk-slider" id="itk-slider1">
  <button class="show-prev-btn">PREV</button>
  <img class="slide-img" src="" />
  <button class="show-next-btn">NEXT</button>
</div>
I
<div class="itk-slider" id="itk-slider2">
  <button class="show-prev-btn">PREV</button>
  <img class="slide-img" src="" />
  <button class="show-next-btn">NEXT</button>
</div>
 
<link href="css/index.css" rel="stylesheet" type="text/css" />
<script src="js/slider.js"></script>
<script src="js/index.js"></script>
slider.js
function Slider() {
  this.imageUrls = []
  this.currentImageIndex = 0
  this.showPrevBtn = null
  this.showNextBtn = null
  this.slideImage = null
 
  this.start = function (elId) {
    var that = this
 
    var elSelector = "#" + elId
    var el = document.querySelector(elSelector)
 
    this.showPrevBtn = el.querySelector(".show-prev-btn")
    this.showNextBtn = el.querySelector(".show-next-btn")
    this.slideImage = el.querySelector(".slide-img")
 
    // subscribe to events
    this.showPrevBtn.addEventListener("click", function (e) {
      that.onShowPrevBtnClick(e)
    })
    this.showNextBtn.addEventListener("click", function (e) {
      that.onShowNextBtnClick()
    })
 
    // create images array
    this.imageUrls.push("https://www.cstatic-images.com/car-pictures/main/USC50ALC051A021001.png")
    this.imageUrls.push(
      "https://img.autobytel.com/2017/chevrolet/corvette/2-800-oemexteriorfronti300-80986.png",
    )
    this.imageUrls.push("http://s3.caradvice.com.au/wp-content/uploads/2015/05/JAGUAR_F-TYPE.jpg")
    this.imageUrls.push(
      "http://moneyinc.com/wp-content/uploads/2016/08/2017-Lamborghini-Aventador-750x500.png",
    )
 
    this.slideImage.src = this.imageUrls[this.currentImageIndex]
    this.showPrevBtn.disabled = true
  }
 
  this.onShowPrevBtnClick = function (e) {
    this.currentImageIndex--
    this.slideImage.src = this.imageUrls[this.currentImageIndex]
    this.showNextBtn.disabled = false
 
    //disable prev button if need
    if (this.currentImageIndex === 0) {
      this.showPrevBtn.disabled = true
    }
  }
 
  this.onShowNextBtnClick = function (e) {
    this.currentImageIndex++
    this.slideImage.src = this.imageUrls[this.currentImageIndex]
    this.showPrevBtn.disabled = false
 
    //disable next button if need
    if (this.currentImageIndex === this.imageUrls.length - 1) {
      this.showNextBtn.disabled = true
    }
  }
}
index.js
var slider1 = new Slider()
var slider2 = new Slider()
 
slider1.start("itk-slider1")
slider2.start("itk-slider2")

Боевой маршрут (JS Ваще с нуля)

Видеоурок - 28 видео из 29