如何调用Javascript对象中定义的所有变量?

时间:2017-04-28 09:10:14

标签: javascript

我试图在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)而不单独调用它们。

感谢。

3 个答案:

答案 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中),所以它表示未定义。

希望这有帮助!

&#13;
&#13;
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;
&#13;
&#13;