这就是我现在要做的。这感觉就像一个hazzle ...什么是在JavaScript中的对象的两个键上声明两个数组的neatets方法?
var broken_posts = new Object();
broken_posts.empty = new Array();
broken_posts.one = new Array();
这就是我现在要做的。这感觉就像一个hazzle ...什么是在JavaScript中的对象的两个键上声明两个数组的neatets方法?
var broken_posts = new Object();
broken_posts.empty = new Array();
broken_posts.one = new Array();
由Andru和蒂洛都是正确的答案,但也许对为什么是为了一些信息:
避免直接调用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。
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的原型性格不太一致。
var broken_posts = { empty: [], one: [] };
var broken_posts = {
empty: [],
one: []
};
解释的答案:参见[§11.1.4:数组初始化(http://ecma-international.org/ecma-262/5.1/# sec-11.1.4)和[§11.1.5:Object Initializer](http://ecma-international.org/ecma-262/5.1/#sec-11.1.5)。 – 2012-07-15 09:42:10