Calling a method from another method in the same class
Solution 1:
You need to use the this
keyword instead of self
.
runMyTest() {
this.myTest();
}
A side note
If you are nesting standard functions notation then this
is not lexically bound (will be undefined). To get around this, use Arrow Functions (preferred), .bind
, or locally define this
outside of the function.
class Test {
constructor() {
this.number = 3;
}
test() {
function getFirstThis() {
return this;
}
const getSecondThis = () => {
return this;
};
const getThirdThis = getFirstThis.bind(this);
const $this = this;
function getFourthThis() {
return $this;
}
// undefined
console.log(getFirstThis());
// All return "this" context, containing the number property
console.log(this);
console.log(getSecondThis());
console.log(getThirdThis());
console.log(getFourthThis());
}
}
new Test().test();
Solution 2:
You need to use this
not self
like
runMyTest() {
this.myTest();
}
However a lot of implementations like to keep the reference and are doing the following:
var self = this;
That might be the reason you were thinking of self
as self reference. For further reading I'd suggest this SO - post
Solution 3:
class MyClass {
myTest() {
console.log('it works');
}
runMyTest() {
this.myTest();
}
}
var myClass = new MyClass();
myClass.runMyTest();