Что такое prototype в javascript? Вопрос, наверное, изъезженный и не смотря на количество заумных описаний, доступных в интернете, я все равно не понимаю, что это такое. Потому прошу объяснить на конкретном примере:jsfiddle.net/Winner/LjG8n
Задача следующая: прописать событие на заполнение формы внутри моего класса таким образом, чтобы внутри события я мог вызвать метод уже объекта этого класса, то есть метод не должен быть статическим. Сейчас при нажатии на submit я имею undefined при попытке вывести атрибут x.jsfiddle.net/Winner/LjG8n/2
В этом же примере в качестве значения X выводится уже что-то более приличное, но одинаковое для двух объектов.
Собственно почему так и как мне быть в моей ситуации?

21 Авг 2019 в 07:09
164 +1
1
Ответы
1

Прототип в JavaScript - это специальный объект, который используется для хранения общих методов и свойств для всех экземпляров определенного класса или объекта. При вызове метода или свойства у экземпляра объекта, JavaScript сначала ищет его в самом объекте, а если не находит, то ищет его в прототипе.

Пример, который вы привели, демонстрирует проблему, связанную с привязкой контекста к методу. При вызове метода в обработчике события submit контекст (this) изменяется, и метод x внутри этого контекста не определен.

Чтобы решить эту проблему, вы можете использовать стрелочную функцию в качестве обработчика события, что позволит вам сохранить контекст объекта:

class MyClass {
constructor(x) {
this.x = x;
this.form = document.getElementById('myForm');
this.form.addEventListener('submit', (e) => {
e.preventDefault();
this.printX();
});
}
printX() {
console.log(this.x);
}
}
let obj1 = new MyClass('Object 1');
let obj2 = new MyClass('Object 2');

Теперь метод printX будет вызываться в контексте объекта MyClass, и вы получите ожидаемый результат для каждого объекта.

Надеюсь, это объяснение поможет вам лучше понять работу прототипов в JavaScript. Если у вас есть еще вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир