Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.02.2018, 16:09
Интересующийся
Отправить личное сообщение для prog_f130 Посмотреть профиль Найти все сообщения от prog_f130
 
Регистрация: 24.08.2016
Сообщений: 20

this в классах
Добрый день. Вопрос следующий. Допустим есть некий класс, который работает с бд.
function SomeClass(a){
    this.a=a;
}

SomeClass.prototype.someDBAction = function(){
    connection.query('some sql', function (sqlErr, results){
        console.log(this.a);
    });
};


Есть ли способ в калбеке запроса к БД получить доступ к переменной класса. Речь о console.log(this.a); - this в контексте функции в данном случае.
Ответить с цитированием
  #2 (permalink)  
Старый 19.02.2018, 16:18
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Не уверен, что в NodeJS так можно, но можете попробовать:
function SomeClass(a){
    this.a=a;
}

SomeClass.prototype.someDBAction = function(){
    var instance=this;
    connection.query('some sql', function (sqlErr, results){
        console.log(instance.a);
    });
};
Ответить с цитированием
  #3 (permalink)  
Старый 19.02.2018, 16:34
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Внезапна.
Вообще-то, стрелочные функции (не имеют собственного this) как раз для этого и придумали.
(а вовсе не для того, чтобы меньше букав писать)
Тырц:
function SomeClass(a){
  this.a=a;
}

SomeClass.prototype.someDBAction = function() {
  connection.query('some sql', (sqlErr, results) => {
    console.log(this.a);
  });
};

Последний раз редактировалось Audaxviator, 19.02.2018 в 16:45.
Ответить с цитированием
  #4 (permalink)  
Старый 19.02.2018, 16:57
Интересующийся
Отправить личное сообщение для prog_f130 Посмотреть профиль Найти все сообщения от prog_f130
 
Регистрация: 24.08.2016
Сообщений: 20

Nexus,
Да, так работает.
Audaxviator,
И да, так тоже работает, спасибо, только от такого синтаксиса у меня WebStorm сходит с ума, это нужно дополнительно поддержку синтаксиса ES6 в настройках включать?

Все, разобрался. Если кому надо
Settings -> Languages and Frameworks -> javascript: JS language version

Последний раз редактировалось prog_f130, 19.02.2018 в 17:05. Причина: добавил настройки
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка псевдо строк по значению Black_Star jQuery 5 04.01.2018 02:55
Значение ссылки в одинаковых классах sotik Элементы интерфейса 11 31.12.2014 11:34
удаление после <br> во всех классах Sakyra Элементы интерфейса 8 01.02.2014 23:27
DOM-события в собственных классах без велосипедов egslava Events/DOM/Window 2 12.04.2012 14:30
Вопрос про виды полей в классах Mахmахmахimus Общие вопросы Javascript 14 20.02.2012 10:03