In my forEach loop, all my class variables become undefined. Any suggestions ?
class MyClass{
constructor(){
this.myVar = "Hello"
}
iterate(itemList){
console.log(this.myVar); // working
for (var i = 0; i < itemList.length; i++) {
console.log(this.myVar); // also working
}
itemList.forEach(function(element){
console.log(this.myVar); // NOT working
});
}
}
instance = new MyClass();
instance.iterate([0,1]);
That because the value of "this" in the forEach function = "undefined", you need to get the value of "this" of the object.
Please check this.
class MyClass{
constructor(){
this.myVar = "Hello"
}
iterate(itemList){
console.log(this.myVar); // working
const that = this;
itemList.forEach(function(element){
console.log(that.myVar); // NOT working
});
}
}
instance = new MyClass();
instance.iterate([0,1]);
Or you can bind the callback function of the forEach with the object's this.
class MyClass{
constructor(){
this.myVar = "Hello"
}
iterate(itemList){
console.log(this.myVar); // working
itemList.forEach(function(element){
console.log(this.myVar); // NOT working
}.bind(this));
}
}
instance = new MyClass();
instance.iterate([0,1]);