我有像这样的构造函数
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")
}
}
答案 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)