Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2017, 18:24
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

Методы класса ES6 и области видимости
Здравствуйте.
Вопрос, конечно, "баян-бабаян" сто раз заданный, но я не нашёл ответ...
В книгах про классы ES6 всё так весело и безоблачно...
class Widget{
    constructor(elem){
        let inner = document.create('div')
        inner.textContent = 'CONTENT'
        inner.addEventListener('click', this.listener)
        inner.dataset.any = 'Hello'
        
        elem.appendChild(inner)
    }
    listener(e){
        this.notVisibleMethod(e.target)
    }
    notVisibleMethod(node){
        if(node.dataset.any === 'Hello'){
            alert('Hello')    
        }
    }

}
let app = document.getElemetById('app')
let widget = new Widget(app)

listener виден, те, если я просто пишу в listener "alert('Hello')", то работает, но из листенера не видно "не зги"...
я упростил, естественно, но суть ясна для опытных: в лситенер не видит notVisibleMethod.
я даже понимаю, что контекст листенера это HTMLElement...
радости всё равно мало
я даже Webpack настроил и у меня всё собирается: sass, babel, uglify, но когда "тык", то "is not a function..."

Последний раз редактировалось Luca, 16.12.2017 в 18:31.
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2017, 18:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Luca,
inner.addEventListener('click', this.listener.bind(this))
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2017, 18:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Luca,
https://javascript.ru/forum/dom-wind...tml#post470583
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2017, 18:56
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

рони,
listener то видно, а вот из listener уже "не зги" не видно
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2017, 19:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Luca
listener то видно, а вот из listener уже "не зги" не видно
что вы потеряли? может вам рабочий макет сделать из вашей схемы и убедится, что всё работает...
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2017, 19:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

inner.addEventListener('click', this)
...
handleEvent(e){
    if(e.type === 'click')
        this.notVisibleMethod(e.target)
}
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
getJSON и области видимости SteelRat Javascript под браузер 1 13.11.2015 06:09
Доступ к главной области видимости Penetrator Angular.js 1 21.01.2015 23:13
Публичные методы класса _axl Общие вопросы Javascript 4 17.07.2013 17:32
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Событие JS, объект выходит из области видимости браузера Z@R@ Events/DOM/Window 1 28.01.2013 07:02