I am having two classes and want to have an Object with values that are available for both classes. This is my sample code:
class Class1 {
constructor() {
this.things = [];
this.testValue = "one two three";
}
doThings() {
for(let i = 0; i < 10; i++) {
this.things[i] = "test "+i;
}
console.log("Class 1 doThings(): ", this.things);
}
getContent() {
console.log("getContent Class1: ", this.things);
}
}
class Class2 extends Class1 {
constructor(elmnt){
super();
}
getContent() {
console.log("Class 2 getContent(): ", this.things);
}
getValue() {
console.log("Value: ", this.testValue)
}
}
let handle1 = new Class1();
let handle2 = new Class2();
handle1.getContent(); // empty because this.things() did not run
handle1.doThings(); // create things...
handle1.getContent(); // this shows the things
handle2.getContent(); // this is empty even is doThings() is called before to produce things...
handle2.getValue();
Why is handle2.getContent() not showing the Things-Array? And (more important) what would be right?
i think the super() overrides the this.things... Is that true? how could i prevent this?
Just because you ran doThings() in handle1, doesn't mean doThings() was run in handle2.
For you to get the output you want, you need to run doThings() in handle2
class Class1 {
constructor() {
this.things = [];
this.testValue = "one two three";
}
doThings() {
for(let i = 0; i < 10; i++) {
this.things[i] = "test "+i;
}
console.log("Class 1 doThings(): ", this.things);
}
getContent() {
console.log("getContent Class1: ", this.things);
}
}
class Class2 extends Class1 {
constructor(elmnt){
super();
}
getContent() {
console.log("Class 2 getContent(): ", this.things);
}
getValue() {
console.log("Value: ", this.testValue)
}
}
let handle1 = new Class1();
let handle2 = new Class2();
handle1.getContent(); // empty because this.things() did not run
handle1.doThings(); // create things...
handle1.getContent(); // this shows the things
handle2.doThings() // This needs to run
handle2.getContent(); // this is empty even is doThings() is called before to produce things...
handle2.getValue();