继承对象。遍历所有对象

Inherit objects. Iterate through all objects

这是我的问题:

我有一个继承对象 (class) 函数,我用 x 多个对象填充它,如下所示:

function Booking (doc_id, arrival_date, supplier_amount, client_amount, currency, profit, calculated_profit, currency_rate) {
    this.doc_id = doc_id;
    this.arrival_date = arrival_date;
    this.supplier_amount = supplier_amount;
    this.client_amount = client_amount;
    this.currency = currency;
    this.profit = profit;
    this.calculated_profit = calculated_profit;
    this.exchange_rate = currency_rate;
    if(pastDate(this.arrival_date)) {
        past_date: true;
    }
    else {
        past_date: false;
    }
} 

是否可以遍历所有对象? 我想要一个遍历所有 Booking 对象的函数,并使用结果填充数据表 table。 我想该函数必须由

定义
Booking.prototype = { }

我似乎无法在网上找到任何关于此的信息。我尝试了所有的想法都没有成功。

要迭代所有 Booking 个实例,您必须在某处存储对它们的引用:

var Booking = (function() {
    var instances = []; // Array of instances
    function Booking(foo) {
        if (!(this instanceof Booking)) return; // Called without `new`
        instances.push(this); // Store the instance
        this.foo = foo; // Your current code
    }
    Booking.prototype.whatever = function() {
        // You can use `instances` here
    }
    return Booking;
})();

但是等等:不要那样做(除非绝对必要)。

上面的代码有一个大问题:由于 Booking 实例在 instances 中被引用,垃圾收集器不会杀死它们,即使它们没有在其他任何地方被引用。

因此,每次创建实例时,都会产生一个memory leak

ECMAScript 6 引入了 WeakSet,它允许您将弱持有对象存储在集合中,以便垃圾收集器在其他任何地方未引用它们时将其杀死。但是 WeakSet 不可迭代,因此它们对您的情况没有用。