我有一个类构造函数,其主要工作是实例化对象。它需要 ID,检查具有该 ID 的对象之前没有创建并创建它。
function Vehicle(ID){
if (this.listOfVehicles.indexOf(ID) !== -1) throw new Error('Vehicle with such ID already exists');
this.ID = ID;
this.listOfVehicles.push(ID);
this.isMoving = true;
}
对象的原型存储了所有对象 ID 和两个方法运行 - 使车辆移动和 stopAll,停止所有车辆。
Vehicle.prototype = {
'listOfVehicles' : [],
'run' : function(){
this.isMoving = true;
},
'stopAll' : function(){
var vehicleID, i, listOfVehicles = Vehicle.prototype.listOfVehicles;
for(i = 0; i < listOfVehicles.length; i++){
vehicleID = listOfVehicles[i];
vehicles[vehicleID].isMoving = false;
}
}
};
基本上一切都运行良好:
var vehicles = {};
vehicles[3] = new Vehicle(3);
vehicles[6] = new Vehicle(6);
vehicles[12] = new Vehicle(12);
所有车辆都被实例化并移动
vehicles[3].stopAll();
所有车辆都没有移动
vehicles[3].run();
只有车辆 3 我在移动
有一件事,我不喜欢这里。为了停止所有车辆,我需要使用某些车辆的方法。但我想不出更好的方法。