Javascript-форум (https://javascript.ru/forum/)
-   Prototype & script.aculo.us (https://javascript.ru/forum/prototype-script-aculo-us/)
-   -   Нужна помощь по созданию класса. (https://javascript.ru/forum/prototype-script-aculo-us/61162-nuzhna-pomoshh-po-sozdaniyu-klassa.html)

Mightyraven 07.02.2016 01:13

Нужна помощь по созданию класса.
 
Добрый день.
Я создаю класс: таблица с несколькими кнопками
Код:

function classTableList(caption) {
  this.caption = caption;
  var btnAdd = document.createElement('button');
  btnAdd.innerHTML = "Добавить";
  btnAdd.onclick = this.addItem;
 
}

И добавляю метод класса, который срабатывает по клику кнопки (открывает модальное окно):
Код:

classTableList.prototype.addItem = function() {
  var addWin = new classModalWin(this.caption);
  addWin.open();
}

Объект создаю так:
Код:

var obj= new classTableList("Заголовок");
Вопрос такой: Мне нужно чтобы в модальное окно попадал заголовок таблицы (caption) но слово this в методе addItem класса classTableList, ссылается не на экземпляр класса, а на саму кнопку, а у кнопки нету свойства caption. Как быть????

Lemme 07.02.2016 01:27

btnAdd.onclick = this.addItem.bind(this);

Mightyraven 07.02.2016 10:25

Спасибо огромное! все заработало...
А не подскажите я вообще правильно классы создаю или есть какой нибудь более правильный способ???

Lemme 07.02.2016 10:55

Mightyraven, я бы не вешал слушателей в конструкторе.

Т.е это вынес бы в отдельный метод.
var btnAdd = document.createElement('button');
   btnAdd.innerHTML = "Добавить";
   btnAdd.onclick = this.addItem;

Mightyraven 07.02.2016 17:06

Точно!!! спасибо за совет я так и сделаю.


Часовой пояс GMT +3, время: 08:47.