如何在不重用JavaScript中的相同变量名的情况下创建对象的多个实例

时间:2014-10-09 23:21:19

标签: javascript object

让我们说我有一个例子,有人可以通过挑选选项订购汽车。

如果他们订购了两辆车,我希望能够使用相同的功能,但不能" clobber"变量名称。这是一个例子:

cars = [];

function car(color, kind) {
    this.color = color;
    this.kind = kind;
}

div.addEventListener('click', function(){
    if(cars.length) {
    newCar = new car('red', 'chrysler');
    } else {
        newCar = new car('red', 'buick');
    }
    cars.push(newCar)
}, false);

我是否更正,每次点击div时,都会生成一个新car(而不是更改原车)?

如果他们有相同的变量名,我就不知道如何回去编辑第一辆车。

能够说出var car+cars.length并获得cars1cars2等会很酷。

1 个答案:

答案 0 :(得分:0)

它会被覆盖,因为你已经在全局范围内定义了变量(但它并不重要,因为你只是将它推送到数组中)。

你不能var car+cars.length(动态变量名称是完全不同的,你不需要进入,但如果你的情况需要它,那么看看{{3 }})。

但是,您可以只显式定义范围,以便永远不会覆盖它:

div.addEventListener('click', function(){
var newCar;    //redefine each time to reinitialize the variable
if(cars.length) {
    newCar = new car('red', 'chrysler');
    } else {
        newCar = new car('red', 'buick');
    }
    cars.push(newCar)
}, false);
相关问题