继承对象。遍历所有对象
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
不可迭代,因此它们对您的情况没有用。
这是我的问题:
我有一个继承对象 (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
不可迭代,因此它们对您的情况没有用。