不了解如何从数组加载类属性

时间:2012-11-03 21:22:31

标签: javascript class

我很感激一些帮助。我正在尝试执行以下小程序:

1)我已经有一些数组,其中包含有关不同汽车的一些信息。例如:

var brand = ["Audi", "Ford", "Peugeot", "Nissan"];
var color = ["red", "black", "black", "white"];

2)然后,我想创建一个创建新车的类,并通过一个方法接收属性,该方法从我存储在数组中的方法中检索它们,

这样的事情是否正确?

function newcar() {
    this.prototype.loadinfo = function() {
        var cbrand = brand[0];
        var ccolor = color[0];
    }
}

对不起,如果这是非常错误的,但我问的原因是我在我检查过的网页上没有找到关于这个特定案例的任何信息。由于我正在尝试使用互联网教程学习javascript,我试着尽可能好地猜测解决方案!

如果它是正确的(某种程度)或正确的版本非常相似,我无法理解在创建新车时我应该如何在阵列中前进。例如,如果我运行一次,创建的第一辆汽车将收到位置[0]的信息,但如果我运行两次或更多次......我怎么知道阵列的哪个位置我应该找到信息?

我对这个问题很困惑。如果有人能给我一些建议,我将非常感激。与此同时,我继续阅读它,看看我是否发现了别的东西。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您想为阵列中的众多品牌创建新的汽车对象。首先要修复你的构造函数。请注意,构造函数大写为约定,原型应在外部声明,但您不需要原型,因为您处理的是独特属性而非共享方法。然后,您可以传递将分配给属性的2个参数。换句话说:

function Car( brand, color ) {
  this.brand = brand;
  this.color = color;
}

如果您需要一种方法来读取这些属性,请将其添加到原型中,如:

Car.prototype = {
  loadInfo: function() {
    alert( this.brand +':'+ this.color );
  }
};

最后,要为阵列中的每个项目创建一辆新车,你可以这样做:

var cars = [];
for ( var i = 0; i < brand.length; i++ ) {
  cars.push( new Car( brand[i], color[i] ) );
}

现在cars阵列中有4辆车,每辆车的品牌和颜色都不同。

但更好的是,您可以在对象和for...in中组织品牌和颜色以创建新车:

var cars = {
  Audi: 'red',
  Ford: 'black',
  Peugeot: 'black',
  Nissan: 'white'
};

var mycars = [];
for ( var c in cars ) {
  mycars.push( new Car( c, cars[c] ) );
}