Как создать глобальную переменную класса Javascript?
Есть класс с конструктором и методом класса. В методе объявлена функция, которая выполняется при нажатии на кнопку. Проблема в том, что внутри этой функции не видны объекты класса, объявленные в конструкторе. Как исправить эту проблему?
class user {
constructor(name) {
this.name = name;
}
sayName() {
const button = document.getElementById('btn');
button.onclick = function() {
alert(this.name); //Значение this.name не определено в пределах данной функции
};
}
}
let user1 = new user('John');
user1.sayName(); //Ничего не выведет, т.к. значение this.name не определено в функции, объявленной внутри метода sayName()
Нужно сделать так, чтобы this.name было видно в пределах всего класса, в т.ч. и во всех функциях, объявленных внутри него. Может быть можно создать глобальную переменную класса, чтобы можно было использовать её или какой-то указатель?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Вам надо прочитать разницу между function и стрелочной функцией в виде контекста
class user {
constructor(name) {
this.name = name;
}
sayName() {
const button = document.getElementById('btn');
button.onclick = () => {
alert(this.name); //Значение this.name не определено в пределах данной функции
};
}
}
let user1 = new user('John');
user1.sayName();
<button id="btn">click me</button>