0

这就是我现在的做法。感觉就是一头雾水...

var broken_posts = new Object();
broken_posts.empty = new Array();
broken_posts.one = new Array();
4

4 回答 4

4
var broken_posts = { empty: [], one: [] };
于 2012-07-15T09:36:45.857 回答
3
var broken_posts = {
empty: [],
one: []
};
于 2012-07-15T09:36:54.433 回答
0

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 的原型性质不太相符。

于 2012-07-15T10:09:25.983 回答
0

我更喜欢使用 CoffeeScript。

然后你可以这样做:

broken_posts =
    empty: []
    one: []
于 2012-07-15T11:12:10.680 回答