Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.03.2018, 13:59
Аспирант
Отправить личное сообщение для Andrew K Посмотреть профиль Найти все сообщения от Andrew K
 
Регистрация: 15.11.2014
Сообщений: 50

Получение this конструктора в функции прототипа
Здравствуйте. У меня есть конструктор Body где в качестве обработчика перемещения мыши по <body> задается прототипная функция mouseMove. Эта функция при каждом вызове должна изменять свойство num в конструкторе Body. Как получить this конструктора (а через него и свойство num) в обработчике?

Я пробовал поставить ссылку на this через замыкание, но из этого ничего не вышло потому что this в самовызывающейся функции равен undefined, в стрелочной функции Window, а в обработчике <body>.

let Body = function () {
    this.num = 1;

    document.body.addEventListener('mousemove', this.mouseMove);
};


Body.prototype.mouseMove = (function () {
    let num = this.num;

    return function () {
        console.log(num++);
    }
})();


new Body();

Последний раз редактировалось Andrew K, 02.03.2018 в 14:02.
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2018, 15:54
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Может так?
function Body() {
    this.num = 1;

    document.body.addEventListener('mousemove', this.mouseMove.bind(this));
};

Body.prototype.mouseMove = function() {
    console.log(this.num++);
};


new Body();
Ответить с цитированием
  #3 (permalink)  
Старый 02.03.2018, 16:13
Аспирант
Отправить личное сообщение для Andrew K Посмотреть профиль Найти все сообщения от Andrew K
 
Регистрация: 15.11.2014
Сообщений: 50

Точно! У меня была мысль насчет bind(), но сразу отказался от этой идеи потому что не предполагал, что метод работает с конструкторами.

Большое спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
получение значения переменной из функции java script valdur2000 Общие вопросы Javascript 1 14.11.2013 20:22
Создание прототипа функции Chiz Events/DOM/Window 8 30.10.2013 22:31
Получение элемента в функции, используя each() ansi_str jQuery 0 30.11.2012 09:48
Получение ответа от функции в которой выполняется ajax Kelly Общие вопросы Javascript 7 10.09.2012 16:23