我在使用 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 类。
Form 类中的 addControl 函数只是将控件添加到数组中。
问题是当我添加多个 SpecializedControl 时,数组中的值会被覆盖,这意味着当我访问数组中的第一项,应该是“Control1”时,我会得到“Control2”。Control1 不再在数组中。
当我使用与 Control 对象相同的函数作为参数时,一切都按预期工作。
有人知道为什么会发生这种情况以及可以采取哪些措施来纠正这种情况?