Property undefined when calling a function from another class

I created this sample code to demonstrate what I’m trying to do. Run this code.

Cannot read property ‘myValue’ of undefined

class Foo {
    myValue = 'test123';
    boo: Boo;

    constructor(boo: Boo) {
        this.boo = boo;
    }

    memoFunc() {
        this.boo.anotherFunction(this.myFunction);
    }

    myFunction() {
        console.log(this.myValue);
    }
}

class Boo {
    anotherFunction(func: () => void) {
        func();
    }
}

const foo = new Foo(new Boo());
foo.memoFunc();

1 thought on “Property undefined when calling a function from another class”

  1. You need to either use bind or use an arrow function to get the correct this value.

    Bind :-

     memoFunc() {
            this.boo.anotherFunction(this.myFunction.bind(this));
        }
    

    Arrow function :-

     memoFunc() {
            this.boo.anotherFunction(()=>this.myFunction());
        }
    
    Reply

Leave a Comment