私は次のようなJSオブジェクトの配列を初期化できることを知っています:
var things = [
{
prop1: 'foo',
prop2: 'bar'
},
{
prop1: 'foo',
prop2: 'bar'
}
];
私はこれらの「匿名」タイプと呼ぶと思います(申し訳ありませんが、私はC#/。NET言語を使用しています)。
これらを同じプロトタイプにしたい場合はどうなりますか?だから私はコンストラクターを定義しました:
var Thing = function Thing() {
};
Thing.prototype.prop1 = 'default value';
Thing.prototype.prop2 = 'default value';
ここで、上記の元のコードの両方の項目をThing
sにします。これを行う良い方法はありますか?
私が推測すると、私は多分次のようなことを言うでしょう:
var things = [
new Thing() {
prop1: 'foo',
prop2: 'bar'
},
new Thing() {
prop1: 'foo',
prop2: 'bar'
}
];
これは基本的にC#オブジェクト初期化構文です。私が避けようとしているのは:
var thing1 = new Thing();
thing1.prop1 = 'foo';
thing1.prop2 = 'bar';
var thing2 = new Thing();
thing2.prop1 = 'foo';
thing2.prop2 = 'bar';
var things = [thing1, thing2];
編集:
また、私のプロトタイプには、共有されるいくつかの関数も含まれていることに注意してください。また、実際には3つの深さでネストされた配列があるため、次のようになります。
{
[
{
[
{},
{}
]
},
{
[
{},
{}
]
}
]
}
そのため、各プロパティを1行ずつ設定するのではなく、このようにすべてをインラインで初期化することを望んでいます。