I have a parent constructor like this:
let list = [];
class Pictures {
constructor(price, title) {
this.price = price;
this.title = title;
list.push(this)
}
updatePrice(price_increase) {
this.price = this.price * price_increase / 100 + this.price
return this.price
}
}
I also have two child classes that inherit from the Pictures(Parent) class
class Photograph extends Pictures {
constructor(photographer, camera, aperture, contrast, price, title) {
super(price, title);
this.price = price;
this.title = this.title;
this.photographer = photographer;
this.camera = camera;
this.aperture = aperture;
this.contrast = contrast;
}
alterContrast(new_contrast) {
this.contrast = new_contrast;
}
toString() {
return `Photographer: ${this.photographer}, Camera: ${this.camera},
Aperture: ${this.aperture}, Contrast: ${this.contrast}`;
}
}
And:
class Painting extends Pictures {
constructor(artist, type, owner, title, price) {
super(price, title);
this.price = price;
this.title = title;
this.artist = artist;
this.type = type;
this.owner = owner;
}
printProvenance() {
}
toString() {
return `Artist: ${this.artist}, Type: ${this.type}, Owner: ${this.owner}`;
}
}
And these are the instances of the classes
let photo_one = new Photograph('Kyle', 'Nikon', 32, 21, 30, 'Sunset')
let photo_two = new Photograph("Maya", "Sony XPR", 100, 23, 100.00, "Festival of Color");
I pushed all of the instances to the "list" array in the parent constructor. Is it possible to loop through the array and use the updatePrice
method in the Pictures
class to update the price value of all objects?
Yes, you can, just use.map, .forEach or for loop
list.map((item) => {
item.updatePrice(1000)
})
But I can recommend to store 'list' inside class.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.