Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.01.2022
Сообщений: 6

is not a function для метода класса

15.03.2023, 09:36. Показов 577. Ответов 4

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class SimpleCodeEditor {
            constructor (editor) {
                this.editor = editor;
                this.code = null;
                this.lines = null;
 
                this.linenumber = 1;
            }
            
            redrawLines () {
                try {
                    this.lines.innerHTML = "";
                    for (let i = 1; i <= this.linenumber; i ++) {
                        this.lines.innerHTML += `${i}<br>`;
                    }
                    console.log('номера строк отрисованы!')
                } catch (e) { console.log(`in SimpleCodeEditor.redrawLines() - '${e.message}'`) }
            }
 
            keyPressed (event) {
                try {
                    if (event.key == 'Enter') {
                        this.linenumber ++;   
                    }
                    if (event.key == 'Backspace' && this.code.value[this.code.value.length - 1] == '\n') {
                        this.linenumber --;
                    }
                    this.redrawLines(); //ошибка возникает тут
                } catch (e) {console.log(`in SimpleCodeEditor.keyPressed() - '${e.message}'`)}
            }
 
            init () {
                try {
                    this.lines = document.createElement('div');
                    this.lines.className = 'lines';
                    this.editor.appendChild(this.lines);
                    this.code = document.createElement('textarea');
                    this.code.className = 'code';
                    this.code.wrap = 'off';
                    this.code.placeholder = '//your code here ...';
                    this.editor.appendChild(this.code);
                    this.redrawLines();
                    this.code.addEventListener('keydown', this.keyPressed);
                } catch (e) {console.log(`in SimpleCodeEditor.init() - '${e.message}'`)}
            }
        }
 
        let Editor = new SimpleCodeEditor($('.editor')[0]);
        Editor.init();
Пишет, дескать, redrawLines is not a function при вызове в методе keyPressed, хотя при вызове в методе init все работает, в чем может быть проблема?...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2023, 09:36
Ответы с готовыми решениями:

Передача метода класса в качестве параметра для метода другого класса
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна...

Создание тестового класса (метода) для готового класса в Java
Может я чего-то не понимаю. Так вот.Припустим я создал готовый класс в Java,который выполняет какие-то действия.но его нужно...

Для класса реализуйте операцию интегрирования по заданному отрезку в виде метода этого класса
class Poly { public: vector&lt;double&gt; coeff; int deg; ... }

4
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
15.03.2023, 10:13
Лучший ответ Сообщение было отмечено sergey_2003810 как решение

Решение

Как вариант (не лучший, но работает):
JavaScript
43
this.code.addEventListener('keydown', this.keyPressed.bind(this));
Добавлено через 1 минуту
JavaScript
43
this.code.addEventListener("keydown", (event) => this.keyPressed(event));
0
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
15.03.2023, 10:22
keyPressed выполняется в контексте textarea, а значит this переопределён
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3844 / 1703 / 431
Регистрация: 14.03.2022
Сообщений: 4,347
15.03.2023, 10:22
Лучший ответ Сообщение было отмечено DrType как решение

Решение

Еще предлагают (статьи и книжки) "биндить" сам метод в конструкторе класса...
JavaScript
1
2
3
4
5
constructor (editor) {
   //
   this.keyPressedthis = this.keyPressed.bind(this)
   //
}
Т.о. "потери" this не произойдет...

JavaScript
1
this.code.addEventListener('keydown', this.keyPressed)
0
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
15.03.2023, 16:10
Лучший ответ Сообщение было отмечено DrType как решение

Решение

Можно ещё замкнуть this...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
keyPressed (_this) {
    return function (event) {
        try {
            if (event.key == 'Enter') {
                _this.linenumber ++;
            }
            if (event.key == 'Backspace' && _this.code.value[_this.code.value.length - 1] == '\n') {
                _this.linenumber --;
            }
            _this.redrawLines(); //ошибка возникает тут
        } catch (e) {console.log(`in SimpleCodeEditor.keyPressed() - '${e.message}'`)}
    }
}
 
this.code.addEventListener('keydown', this.keyPressed(this));
... но лучше всё-таки bind
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2023, 16:10
Помогаю со студенческими работами здесь

Что происходит с методами класса при создании экземпляра класса ? Память для каждого метода также отводится ?
Вопрос чайника: Что происходит с методами класса при создании экземпляра класса ? Память для каждого метода также отводится ? Если в...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Std::function для хранения функции класса
class test { public: test() { f = display5; //Как правильно написать? } void setFunction(function&lt;void()&gt; func) ...

Как вызвать из одного класса (для метода типа void) метод типа boolean другого класса?
ребят, только учусь и конечно, вопросов возникает много. ситуация вот в чем. есть массив. я должна найти в i-том элементе какую-то...

Вызов метода класса из метода другого класса
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru