2014-02-19 55 views
1

是否有更乾淨/更好/更快的方法來做到這一點?更快的方式來實例化和填充對象陣列

taskList = new Array(); 
currentTask = new Object(); 
closedTask = new Object(); 
search = new Object(); 
taskList.push(currentTask); 
taskList.push(closedTask); 
taskList.push(search); 
+1

TASKLIST = [{},{},{}]; ? – Alberto

回答

4

是啊,如果你不使用currentTask,closedTask和搜索其他地方,你可以這樣做:

var taskList = [ {}, {}, {} ]; 

否則:

var currentTask = {}, 
    closedTask = {}, 
    search = {}; 
var taskList = [ currentTask, closedTask, search]; 
+1

請注意,'tasklist'不是全局範圍內的屬性。 – Cerbrus

+0

注意。謝謝! – spassvogel

0

使用:

taskList=[currentTask,closedTask,search]; 
2
var currentTask = {}, 
    closedTask = {}, 
    search = {}, 
    taskList = [currentTask, closedTask, search]; 
2

這兩種方法都有效,具體取決於您要完成的工作。

var taskList = [{}, {}, {}] //Creates 3 Objects 
OR 
var taskList = [new Object(), new Object(), new Object()] //Object() can be replaced with any other object such as Array, String, etc 

使用然後,您可以只訪問單個對象:

taskList[x]; //Where x is the index of the object. 
+0

更像是這樣:D +1 – Cerbrus

2

一個甚至nerdier變種:

var currentTask, 
    closedTask, 
    search, 
    taskList = [currentTask={}, closedTask={}, search={}]; 

玩笑放在一邊,使用初始化語法,
{}基本上等同到new Object[]new Array

大括號語法允許創建無類型對象(即,通用Object類的對象),而操作者new允許創建類實例。

如果要創建一個空的無類型對象,則結果是等效的。

現在考慮這樣的:

var Dog = function (value) 
{ 
    this.bone= value; 
} 
Dog.prototype.bark = function() { console.log ("Woof!"); } 

var Alf = new Dog (10); // Alf is a true able dog 
var Rex = { bone:10 }; // Rex is just a generic object aping a dog 

console.log (Alf.bone); // 10 
console.log (Rex.bone); // 10 
Alf.bark();    // Woof! 
Rex.bark();    // generic objects don't bark ! 
+0

只是澄清,「初始化語法」是「新的對象(),新的陣列()」或只是括號/大括號? – hermann

+0

_「基本上」_?不。它甚至是等同的。 – Cerbrus

+0

@Cerbrus好的,nitpickers可能會反對說,一個'{}'或'[]'初始值設定項與new運算符的調用方式沒有多大區別,但是,對於所有實際目的而言。 –

相關問題