簡體   English   中英

您可以將對象添加到其構造函數內部的數組中嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM