[英]Can you add an object to an array inside its constructor
我試圖將對象添加到具有特定ID的數組中,而該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,因此需要在構造函數中使用它。
如果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個元素。
是的,這可行。 但是您可能應該定義您的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.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.