这就是我现在的做法。感觉就是一头雾水...
var broken_posts = new Object();
broken_posts.empty = new Array();
broken_posts.one = new Array();
这就是我现在的做法。感觉就是一头雾水...
var broken_posts = new Object();
broken_posts.empty = new Array();
broken_posts.one = new Array();
var broken_posts = { empty: [], one: [] };
var broken_posts = {
empty: [],
one: []
};
Andru 和 Thilo 的答案都是正确的,但也许一些关于为什么的信息是正确的:
避免直接调用 Array 构造函数:这会造成混淆和误导。var a = new Array(5);
返回[undefined,undefined,undefined,undefined,undefined]
,而var b = new Array('5');
返回['5']
。甚至var c = new Array(5,5);
=> [5,5]
。
同样适用于直接对象构造函数。确实没有理由创建一个调用基本对象构造函数的对象。new
只有在创建日期对象或调用自制的构造函数时才应该使用关键字(即使在这种情况下,也不需要new
关键字,还有其他设计模式)。使用对象字面{}
量更常见,允许直接分配属性(甚至方法)。此外,以 JIT 方式创建对象要容易得多。它不仅需要更少的代码行,正确使用闭包,或者只是一次调用,一旦你完成一个对象,它就可以被 GC'ed。
function iWantAnObject(obj)
{
if (obj instanceof Object)
{
return true;
}
return false;
}//function returns, obj is GC'ed
iWantAnObject({just:'some',rand:'Object',withA:function(){console.log('a method';}});
与这种情况相反:
var tempObj = new Object();
tempObj.just = 'some';//etc...
//etc...
iWantAnObjct(tempObj);
//tempObj isn't yet GC'ed
在最后一个示例中,机会是:您不小心创建了全局变量,在内存中拥有不再需要的各种对象,最后但并非最不重要的一点是:与 JS 的原型性质不太相符。
我更喜欢使用 CoffeeScript。
然后你可以这样做:
broken_posts =
empty: []
one: []