Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2021, 16:31
Аватар для slark
Новичок на форуме
Отправить личное сообщение для slark Посмотреть профиль Найти все сообщения от slark
 
Регистрация: 05.05.2021
Сообщений: 8

Как создать свой класс
Добрый день, создал свой небольшой класс который вешает событие "клик" на свои объекты, в моем случае на кнопки. CSS-класс кнопки передается при создании объекта.

class btn {
    constructor (className) {
        this.className = className
        this.btn = document.querySelector(className)
    }

    btnClick () {
        this.btn.addEventListener('click', function () {
            console.log('Привет: ' + this.className)
        })
    }
}

let btn1 = new btn('.btn-1')
btn1.btnClick()

let btn2 = new btn('.btn-2')
btn2.btnClick()


Вопрос , допустим у меня будет 10 методов, что делать чтобы их постоянно не вызывать для каждого объекта? Можно ли сделать так, чтобы эти методы автоматически запускались при создании объекта?
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2021, 16:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

constructor (className) {
  this.className = className
  this.btn = document.querySelector(className)
  this.btnClick()
}
0_o
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2021, 16:40
Аватар для slark
Новичок на форуме
Отправить личное сообщение для slark Посмотреть профиль Найти все сообщения от slark
 
Регистрация: 05.05.2021
Сообщений: 8

спасибо , вроде работает
не знал что в конструктор можно вызовы запихивать
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2021, 16:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

slark,
class btn {
            constructor(className) {
                this.className = className;
                this.btn = document.querySelector(className);
                this.btn.addEventListener('click', this.btnClick.bind(this));
                this.btnClick()
            }

            btnClick() {
                console.log('Привет: ' + this.className)
            }
        }

        let btn1 = new btn('.btn-1')

        let btn2 = new btn('.btn-2')
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2021, 16:46
Аватар для slark
Новичок на форуме
Отправить личное сообщение для slark Посмотреть профиль Найти все сообщения от slark
 
Регистрация: 05.05.2021
Сообщений: 8

жесть круто спс, буду допиливать
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2021, 16:57
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Это ещё не круто, круто вот так) :
class btn {
  constructor(className) {
    this.className = className;
    this.btn = document.querySelector(className);
    this.btn.addEventListener('click', this);
    this.btnClick()
  }
  
  handleEvent(event) {
    const { type: [firstLetter, ...rest] } = event;
    return this[`btn${firstLetter.toUpperCase()}${rest.join('')}`](event);
  }

  btnClick() {
    console.log('Привет: ' + this.className)
  }
}
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 08.10.2021, 17:05
Аватар для slark
Новичок на форуме
Отправить личное сообщение для slark Посмотреть профиль Найти все сообщения от slark
 
Регистрация: 05.05.2021
Сообщений: 8

ну всё поплыл
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2021, 17:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Aetae,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как дублировать класс ethereal Элементы интерфейса 12 13.06.2019 12:03
Как создать свой оверлей с картинкой Estiva jQuery 5 16.05.2013 15:04
Как создать многомерный пустой или как не создавать. PashPP Общие вопросы Javascript 6 02.08.2012 21:49
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13
Как создать таймер, как на Letitbit? free_style Javascript под браузер 1 01.07.2010 17:55