Как передавать опции в функцию конструктор?

Доброе утро, Тостер!

Всё глубже начинаю изучать JavaScript. И чем дальше, тем больше вопросов.

На codepen сделал небольшую функцию конструктор, а для прототипа конструктора добавил несколько методов, тут возникает несколько вопросов:
1. Правильно ли организован конструктор и его прототип в целом?
2. Правильно ли вызывать метод init() прямо в конструкторе?
3. Как для конструктора задать стандартные опции?

Например, я хочу отдавать опцию: active, по дефолту она false, на при создании нового экземпляра объекта, я хочу отдавать true - следующим образом:
var x = new iRead('.selector', {
    active: true
});


А в методе init проверять значение переменной, и совершать какие-то действия:
...
init: function() {
    var item = this.item;
    this.toggleBtn.on(EVENTS.CLICK, function() {
      $(item).toggleClass(CLASS_LIST.READ_CLASS);
    });
   if(active) {
      $(item).addClass(CLASS_LIST.READ_CLASS);
     }
  }
...
});


И вообще, правильно ли я понимаю, как работаю опции?
  • Вопрос задан
  • 364 просмотра
Пригласить эксперта
Ответы на вопрос 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
передавать опции в iRead так же, как и в любые другие функции в js

function iRead(cls, options) {
    defaultOptions: {
        active: false
    }
    this.options = $.extend( defaultOptions, options ); // вот тут сохраняем наши опции в свойства новоиспеченного объекта
}


а init лучше переписать на что-то такое:
init: function() {
    var _this = this;
    var item = this.item;

    this.toggleBtn.on(EVENTS.CLICK, function() {
      _this.toggleClass($(item), CLASS_LIST.READ_CLASS, active);
    });
    _this.toggleClass($(item), CLASS_LIST.READ_CLASS, active);
  }

toggleReadClass: function(el, cls, active) {
    el.toggleClass(cls, active);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы