Javascript this в классах

140
29 августа 2019, 11:30

Допустим, существует класс:

function MyClass {
   self = this; // Создаст глобальный объект self
   $(document).ready(this.g);
}
MyClass.prototype.g = function(event) { 
   // здесь this - это объект вызывавший событие.
   // обращаемся к полям класса через self
}

Но self - это глобальный объект, если мы таким же образом определим другой класс, с таким же self, то он собъет self текущего.

Я вижу решение только в выдаче каждому объекту своего id и обращению к ним через глобальный массив в функциях подобным g.

Существуют другие способы обойти это?

Answer 1
$(document).ready((e) => this.g(e));

или

this.bound_g = this.g.bind(this);
$(document).ready(this.bound_g);

тогда

MyClass.prototype.g = function(event) { 
   // здесь this - это объект MyClass 
}

Другой вариант:

var self = this;
$(document).ready(function(event) { 
  self.g(this, event);
});
MyClass.prototype.g = function(element, event) { 
   // здесь this - это объект MyClass 
}
Answer 2
$(document).ready(this.g);
$(document).ready(this.g.bind(this));

В моём классе используются как unbind, так и removeEventListener, так не получится, к сожалению.

constructor() {
  this.g = this.g.bind(this);
}
doSmth() {
  $(document).ready(this.g);
}
READ ALSO
Vuetify, Vue мой шаблон

Vuetify, Vue мой шаблон

Не очень понял что он хочет, вроде всё отделил, <v-toolbar>

120
Почему owl не видит itemы в функции?

Почему owl не видит itemы в функции?

Добрый день есть такой код

126
Иконки в v-select vuetify

Иконки в v-select vuetify

Как можно добавить выбор иконок в селект vuetify? Как на картинке

128
Как решить вопрос с слайдером?

Как решить вопрос с слайдером?

Есть слайдер с счетчиком, при включении нижнего прогрессбара перестает работать счетчикonTranslated : counter, onTranslated : moved

128