JavaScript: добавление унаследованного класса в массив не работает

У меня проблемы с JavaScript. У меня есть следующий код:

<html>
<head>
<title>Test</title>
<script  type="text/javascript">
function Control(){
    var name;

    this.setName = function(newName){
        name = newName;
    };

    this.getName = function(){
        return name;
    };
}

function SpecializedControl(){
}
SpecializedControl.prototype = new Control();

function Form(){
    var formControls = [];

    this.addControl = function(control){
         formControls.push(control);

         alert(formControls[0].getName());
    };
}

var form = new Form();

var control1 = new SpecializedControl();
control1.setName("Control1");
form.addControl(control1);

var control2 = new SpecializedControl();
control2.setName("Control2");
form.addControl(control2);

</script>
</head>
<body>
</body>
</html>

SpecializedControl наследуется от класса Control.

Функция addControl в классе Form просто добавляет элемент управления в массив.

Проблема в том, что когда я добавляю более одного SpecializedControl, значения в массиве переопределяются, это означает, что когда я обращаюсь к первому элементу в массиве, который должен быть «Control1», я получаю «Control2». Control1 больше не находится в массиве.

Когда я использую ту же функцию с объектами управления в качестве параметров, все работает как положено.

Кто-нибудь знает, почему так происходит и что можно сделать, чтобы это исправить?

5
задан Alexander 12 June 2012 в 22:11
поделиться