获取已创建对象的数量

时间:2018-02-14 15:48:17

标签: javascript object

这是我第一次使用OOP进行试验,所以请保持温和..

首先我创建了一个名为Connection的函数,然后我从中创建了对象。目前有2个硬编码的对象,但可以在以后动态创建多个对象。如何获取已创建对象的数量(在此示例中,结果应为" 2")?或者是否有更聪明的方法来遍历所有创建的对象?

function Connection(origin, target, departuredate, arrivaldate) {
     this.origin = origin;
     this.target = target;
     this.departuredate = departuredate;
     this.arrivaldate = arrivaldate;
}

var fare1 = new Connection("FRA", "BKK", "25.06.2018", "10.07.2018");
var fare2 = new Connection("FRA", "LAX", "22.07.2018", "30.07.2018");

2 个答案:

答案 0 :(得分:4)

在javascript函数中也是对象,并且可以具有属性。基于georg的注释并避免使用全局变量,为什么不给Connection一个数组属性然后根据需要使用它呢?

function Connection(origin, target, departuredate, arrivaldate) {
     this.origin = origin;
     this.target = target;
     this.departuredate = departuredate;
     this.arrivaldate = arrivaldate;
     Connection.instances.push(this);
}

Connection.instances = [];

var fare1 = new Connection("FRA", "BKK", "25.06.2018", "10.07.2018");
var fare2 = new Connection("FRA", "LAX", "22.07.2018", "30.07.2018");

console.log(Connection.instances);
console.log('Number of connections:', Connection.instances.length);

修改

请记住,这是一种天真的方法。它不会从instances属性中删除Connection的实例。此外,它会永远保留对这些实例的引用,可能不是你想要做的。我将所有这些作为练习留给读者,因为从技术上讲,问题没有要求或关于任何问题。

答案 1 :(得分:0)

您可以在构造函数中使用全局变量。

var connectionNb = 0;

function Connection(origin, target, departuredate, arrivaldate) {
     this.origin = origin;
     this.target = target;
     this.departuredate = departuredate;
     this.arrivaldate = arrivaldate;
     ++connectionNB;
}

var fare1 = new Connection("FRA", "BKK", "25.06.2018", "10.07.2018");
var fare2 = new Connection("FRA", "LAX", "22.07.2018", "30.07.2018");