У меня проблемы с 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 больше не находится в массиве.
Когда я использую ту же функцию с объектами управления в качестве параметров, все работает как положено.
Кто-нибудь знает, почему так происходит и что можно сделать, чтобы это исправить?