これが私が今やっている方法です。ハズレのような感じ...
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 のような方法でオブジェクトを作成する方がはるかに簡単です。必要なコード行が少なくなるだけでなく、クロージャーを正しく使用するか、1 回の呼び出しだけで、使い終わったオブジェクトを 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 のプロトタイプの性質とうまく調和していない可能性があります。
代わりに CoffeeScript を使用したいと思います。
次に、次のようにします。
broken_posts =
empty: []
one: []