Узел js использует "this" из вызова функции в module.exports - PullRequest
0 голосов
/ 12 июня 2018

Я вызываю локальную функцию из функции module.exports.Как я могу получить доступ к объекту exports this?

exports.myVar = 'foo'

exports.myFunc = function() {
  localFunc()
}

function localFunc() {
  console.log(this.myVar) //Undefined
}

Я пытался использовать localFunc().bind(this), но это тоже не работает.Любая помощь приветствуется!

Ответы [ 4 ]

0 голосов
/ 12 июня 2018

два способа решить вашу проблему.

первый:

exports.myVar = 'foo'

exports.myFunc = function() {
  that = this;
  localFunc(that)
}
function localFunc(that) {
  console.log(that.myVar) //foo
}

второй

exports.myVar = 'foo'

exports.myFunc = function() {
  localFunc()
}

localFunc = ()=> {
  console.log(this.myVar) //foo
}
0 голосов
/ 12 июня 2018

вот что я делаю:

function localFunc() {
   const self = exports;
   console.log(self.myVar);
}

exports.myVar = 'foo';

exports.myFunc = function () {
    localFunc();
}
0 голосов
/ 12 июня 2018

Вы можете попробовать это:

var data = module.exports = {
  myVar: 'foo',

  myFunc: function() {
    localFunc();
  }
}

function localFunc() {
  console.log(data.myVar);
}
0 голосов
/ 12 июня 2018

Просто используйте exports.Или объявите myVar переменной, назначьте ее для экспорта и создайте замыкание вокруг нее для localFunc.

this действительно имеет смысл, только когда вы привязываете событие и / или создаете объекты.

...