简体   繁体   中英

I have some instances of a class and I pushed them into an array. Can I loop through the array and update the price of all the array objects?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM