如何将所有创建的员工存储在对象中

时间:2017-01-07 04:40:35

标签: javascript

我有像这样的构造函数

function Employee(name, rank, mf)={
    this.name=name;
    this.rank=rank;
    this.mf=mf;
}

如何创建新员工并将名称,等级和mf存储在对象中,以便稍后更改?请记住,我通过功能创建新员工,因此我无法手动创建新的var。 THx中。

这就是我创建新员工的方式

function employee(){
var name=prompt("Last, First");
var rank=prompt("Rank");
var mf=prompt("M/F");
var ID=prompt("ID");
var confirming=confirm("ID: "+ID+"Name: "+name+"Rank: "+rank+", "+mf);
if(confirming){
    new Employee(name, rank, mf);
}else{
    console.log("Employee addition cancled")
}
}

2 个答案:

答案 0 :(得分:0)

您需要维护对象引用的全局数组,请查看我的示例代码:

var objRef=[];
function employee(){
var name=prompt("Last, First");
var rank=prompt("Rank");
var mf=prompt("M/F");
var ID=prompt("ID");
var confirming=confirm("ID: "+ID+"Name: "+name+"Rank: "+rank+", "+mf);
if(confirming){
    objRef[name]=new Employee(name, rank, mf); //access using objRef['alen']
}else{
    console.log("Employee addition cancelled.")
}
}

//Your constructor. 
function Employee(name, rank, mf)
{
    this.name=name;
    this.rank=rank;
    this.mf=mf;
}

您可以通过objRef [name]访问您的对象。你可以把id作为关键。

答案 1 :(得分:0)

您的构造函数代码中存在拼写错误,这可能会导致编译(语法)错误。请注意 equal = 符号。应该 function Employee(name, rank, mf) {

问:如何创建新员工并将名称,等级和mf存储在对象中,以便稍后更改?

A:您需要通过将新对象存储到变量中来维护对该新对象的引用。你可以通过做到这一点来实现它 var myEmployee1 = new Employee(...);

因此,您可以通过调用myEmployee.name

之类的变量来访问同一个对象

如果您正在使用创建员工对象角色的功能,则可以将该功能修改为,返回新创建的对象或直接填充到全局变量中。我的偏好是前者,因为它更清洁。

此外,跟踪数组中的员工对象是您可以使用的1策略,但取决于您期望的对象数量。在数组中查找对象可能不如将它们存储在{}字典数据结构中那样有效。由于您需要在找到正确的数据之前循环遍历数组中的单个对象,而您可以直接从键访问对象的字典,实际上是在大多数情况下横切树更快。

显然,使用名称作为密钥存储员工对象可能很危险,因为名称永远不会是唯一的。相反,您应该使用唯一标识符Id

示例:

function employee(){
    ...
    return new Employee(name, rank, mf);
}

var myDictionary = {};
var emp = employee();
myDictionary[emp.id] = emp; // Store the employee object by its key with value = the object itself.

// To access the very same employee object next time. Let say the id is 10 then you would do...
console.log(myDictionary[10].name)