'Access Javascript class fields in class methods
Opposed to my expectation I can't access my class field myLibrary in the class method initialize().
class ViewController {
myLibrary = new Library();
initialize() {
console.log(myLibrary); // undefined
The only "solution" I found was to declare myLibrary outside of the class as a global variable. Is there a way to declare fields in a class and then, well, use them?
Solution 1:[1]
JavaScript classes do not work the same way as Java classes.
To access properties on an object you need to state the object and then access a property on it. They aren't treated as variables in the current scope.
Inside a method, the keyword this will give you the associated object. (See How does the "this" keyword work? for a less simplified explanation).
So you need this.myLibrary instead of just myLibrary.
Solution 2:[2]
class Library {
…
}
class ViewController {
constructor() {
this.myLibrary = new Library();
}
log() {
console.log(this.myLibrary);
}
}
const viewController = new ViewController();
viewController.log()
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | marcobiedermann |
