0

Why can't Javascript class methods access the class variables and other methods via this? I'm using Lightning Web Components, which is a similar web frontend to React. I have a component which is a class, and a property ready holding state. However, when I launch the method method, the property ready of the class is undefined. Accessing the same property from an anonymous arrow function works perfectly well.

import { LightningElement } from 'lwc';

export default class Testi extends LightningElement {
    ready = false;

    method() {
        console.log(this.ready);
        this.ready = false;
        console.log(this.ready);
    }

    connectedCallback() {
        setTimeout(() => {
            console.log(this.ready);
            this.ready = true;
            console.log(this.ready);
        }, 2000);

        setTimeout(this.method, 4000);
    }

}

I get the same error if I try to access other class methods from method(), they're undefined.

Instead, to access the methods and properties of the class, I need to pass this to the functions as a parameter but I'm pretty sure that's not correct:

import { LightningElement } from 'lwc';

export default class Testi extends LightningElement {
    ready = false;

    method(obj) {
        console.log(obj.ready);
        obj.ready = false;
        console.log(obj.ready);
    }

    connectedCallback() {
        setTimeout(this.method, 4000, this);
    }

}
Villahousut
  • 115
  • 1
  • 11

0 Answers0