Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   this в классах (https://javascript.ru/forum/node-js-io-js/72693-v-klassakh.html)

prog_f130 19.02.2018 16:09

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 в контексте функции в данном случае.

Nexus 19.02.2018 16:18

Не уверен, что в 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);
    });
};

Audaxviator 19.02.2018 16:34

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

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

prog_f130 19.02.2018 16:57

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

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


Часовой пояс GMT +3, время: 22:36.