0

I have such a situation in my NodeJS project:

//utility.js

module.exports = () => {
   console.log(this.property1);
}
//main.js
const utilityFunc = require(./utility);

class MyClass {

  constructor(name){
    this.property1 = name; 
  }

  foo(){
    //...
    utilityFunc();
  }

}

const myObject = new MyClass('A name');
myObject.foo();

What I expect is to output 'A name', but property1 is not defined in the scope of this. This code seems to work if I write the function in main.js instead of importing it. I'm trying to figure out why this happens.

nostyn
  • 3
  • 3
  • 1
    `This code seems to work if I write the function in main.js instead of importing it.` I doubt it does. – tkausl Sep 19 '21 at 20:18
  • 2
    You are very significantly misunderstanding how `this` works. The value of `this` in your utility module will be the module context in which the function was declared. – Pointy Sep 19 '21 at 20:18

0 Answers0