我试图在JavaScript中练习构造函数,这是我目前的代码 -
function officePpl(name,exp,gender,age){
this.empName = name;
this.empExp = exp;
this.empGender = gender;
this.empAge = age;
}
var emp1 = new officePpl("John", 4, "Male", 29);
var emp2 = new officePpl("Mathew", 4, "Male", 29);
var emp3 = new officePpl("Smith", 4, "Male", 31);
showEmp = document.getElementById("empdetails");
for(var i =0; i<officePpl.length;i++){
showEmp.innerHTML += this.empName + " " + this.empAge + "<br />";
}
我想显示创建的所有变量并显示它们。我正在运行一个for循环来获取长度,但是循环只显示未定义的未定义。
你可以建议我如何输出所有变量(emp1,emp2,emp3,emp4)而不单独调用它们。
感谢。
答案 0 :(得分:2)
我想数组就是你需要的,而不是单独的变量..
function officePpl(name,exp,gender,age){
this.empName = name;
this.empExp = exp;
this.empGender = gender;
this.empAge = age;
}
var emp = [ new officePpl("John", 4, "Male", 29),
new officePpl("Mathew", 4, "Male", 29),
new officePpl("Smith", 4, "Male", 31) ];
showEmp = document.getElementById("empdetails");
for(var i =0; i<emp.length;i++){
showEmp.innerHTML += emp[i].empName + " " + emp[i].empAge + "<br />";
}
答案 1 :(得分:1)
当您说this.empName
时,this
不是您的员工对象。 this
关键字是指函数所属的对象,在本例中是window
。
所以写this.empName
表示window.empName
,这显然是undefined
您必须引用先前创建的对象
var ppl = [];
var emp1 = new officePpl("John", 4, "Male", 29);
ppl.push(emp1); // pushing employees to array. Add as many as you want
var emp2 = new officePpl("Mathew", 4, "Male", 29);
var emp3 = new officePpl("Smith", 4, "Male", 31);
showEmp = document.getElementById("empdetails");
for(var i =0; i<ppl.length;i++){
showEmp.innerHTML += ppl[i].empName + " " + ppl[i].empAge + "<br />";
}
答案 2 :(得分:0)
您需要一个阵列来存储您的员工
1)当你说officePpl.length
时,它返回函数officePpl的长度。这个长度只不过是函数期望的形式参数的数量。
在你的例子中它是4。
在length
上获取employees
属性是正确的方法。
2)在for循环的后面,你指的是this.empName
。由于for循环在全局范围内,因此"this"
绑定到窗口。由于window对象对empName一无所知(因为它在officePpl中),所以它表示未定义。
希望这有帮助!
function officePpl(name,exp,gender,age){
this.empName = name;
this.empExp = exp;
this.empGender = gender;
this.empAge = age;
}
var employees = [];
var emp1 = new officePpl("John", 4, "Male", 29);
employees.push(emp1);
var emp2 = new officePpl("Mathew", 4, "Male", 29);
employees.push(emp2);
var emp3 = new officePpl("Smith", 4, "Male", 31);
employees.push(emp3);
var showEmp = document.getElementById("empdetails");
for(var i =0; i<employees.length;i++){
showEmp.innerHTML += employees[i].empName + " " + employees[i].empAge + "<br />";
}
&#13;
<div id="empdetails"></div>
&#13;