我正在尝试将对象添加到具有特定id的数组中,我需要在构造函数中知道。这有用吗?
objectArray = [];
function newObject (name, age, eyeColour) {
this.name = name;
this.age = age;
this.eyeColour = eyeColour;
var id = *some integer*
this.id = id;
objectArray[id] = this; //This is the line in question.
}
显然这只是一个例子。在我的真实代码中,我在3个新DOM对象的id中使用id,所以我需要在构造函数中使用它。
答案 0 :(得分:2)
如果id
是一个数字,那肯定会有效,数组就是要通过它们的索引来访问。只要全局声明objectArray
,您在代码中始终看到这一点并且在构造函数中无关紧要:
var arr = ["one", "two"];
for(var i =0; i < arr.length; i++){
alert(arr[i]);
}
如果id
不是您最有可能使用某个对象的数字。
var obj = {one: 1, two: 2};
alert(obj["one"]);
以下是使用您的代码的示例:
var objectArray = []
function newObject (name, age, eyeColour) {
this.name = name;
this.age = age;
this.eyeColour = eyeColour;
var id = 3
this.id = id;
objectArray[id] = this; //This is the line in question.
}
newObject("Kevin", "30", "Blue");
alert(objectArray[3].name);
有一点需要注意的是,如果您的计算ID与实际数组不同步,那么假设您在数组为空时将对象分配给第三个索引,array.length
将返回4但是数组只包含1个元素。
答案 1 :(得分:2)
是的,这很有效。但您应该定义您的ID - 您缺少关键字var
。
如果id
不是数字,而是字符串,则将objectArray定义为Object时,它将起作用。 (不是数组)
我不确定,您在哪里定义了ObjectArray。但是,如果你将行var ObjectArray = {};
放在上面,它就会起作用。 (如果您确定,该ID始终是一个数字,请改用var ObjectArray = [];
。
这是重新代码:
function newObject (name, age, eyeColour) {
this.name = name;
this.age = age;
this.eyeColour = eyeColour;
var id = *something calculated*
this.id = id;
var objectArray = {}; //or =[] for and Array
objectArray[id] = this; //This is the line in question.
}