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 в контексте функции в данном случае. |
Не уверен, что в 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); }); }; |
Внезапна.
Вообще-то, стрелочные функции (не имеют собственного this) как раз для этого и придумали. (а вовсе не для того, чтобы меньше букав писать) Тырц: function SomeClass(a){ this.a=a; } SomeClass.prototype.someDBAction = function() { connection.query('some sql', (sqlErr, results) => { console.log(this.a); }); }; |
Nexus,
Да, так работает. Audaxviator, И да, так тоже работает, спасибо, только от такого синтаксиса у меня WebStorm сходит с ума, это нужно дополнительно поддержку синтаксиса ES6 в настройках включать? Все, разобрался. Если кому надо Settings -> Languages and Frameworks -> javascript: JS language version |
Часовой пояс GMT +3, время: 21:28. |