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 のような方法でオブジェクトを作成する方がはるかに簡単です。必要なコード行が少なくなるだけでなく、クロージャーを正しく使用するか、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 のプロトタイプの性質とうまく調和していない可能性があります。

于 2012-07-15T10:09:25.983 に答える
0

代わりに CoffeeScript を使用したいと思います。

次に、次のようにします。

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