繁体   English   中英

我有一些 class 的实例,我将它们放入一个数组中。 我可以遍历数组并更新所有数组对象的价格吗?

[英]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?

我有一个这样的父构造函数:

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
    }
}

我还有两个继承自 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}`;
    }
}

和:

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}`;
    }
}

这些是类的实例

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");

我将所有实例推送到父构造函数中的“列表”数组。 是否可以循环遍历数组,使用Pictures class中的updatePrice方法更新所有对象的价格值?

是的,你可以,只需使用 .map、.forEach 或 for 循环


    list.map((item) => {
        item.updatePrice(1000)
    })

但我可以建议将“列表”存储在 class 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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