我知道我可以像这样初始化一个 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 层的数组,所以它更像:
{
[
{
[
{},
{}
]
},
{
[
{},
{}
]
}
]
}
这就是为什么我希望像这样内联初始化所有内容,而不是逐行设置每个属性。