我是javascript的新手(学习第二周(,所以如果这是一个愚蠢的问题,我很抱歉!我已经找到了两种方法来做我想做的事情,并且需要一些关于第二种方法是否可以接受的建议。
我知道一个类可以有采用数组的属性,其中数组列出了一个属性的多个值。但是,如果我有一个类的属性是可分组的(与对象的同一方面相关(,我能把它们做成一个接受数组的属性,而不是把每个列为一个属性吗?
因此,如果我有一个具有mainUses
属性的Tent
类,我知道我可以向一个新实例传递一个具有多个主要用途的帐篷的数组。
class Tent {
constructor(mainUses){
this.mainUses = mainUses;}};
const myTent = new Tent (["Backpacking","Mountaineering","Bikepacking"]);
如果我也有帐篷的最小包装重量、标准重量和最大重量,我可以做:
class Tent {
constructor(mainUses,minWeight,standardWeight,maxWeight){
this.mainUses = mainUses;
this.minWeight = minWeight;
this.standardWeight = standardWeight;
this.maxWeight = maxWeight;}};
const myTent = new Tent (["Backpacking","Mountaineering","Bikepacking"], "2kg","2.2kg","2.4kg");
但是,如果我将3个权重分组为一个"超级属性"(为了更好的描述(,如下图所示:
class Tent {
constructor(mainUses,weight){
this.mainUses = mainUses;
this.weight = weight;}};
然后将一个列出3个权重的数组传递给"超级属性":
const myTent = new Tent (["Backpacking","Mountaineering","Bikepacking"],["2kg","2.2kg","2.4kg"]);
然后,为了仍然可以很容易地访问它们,请在类中添加一个注释,列出在创建新实例或想要访问某些内容时要使用的索引。
/*minWeight [0], standardWeight [1], maxWeight[2]*/
使得CCD_ 3变为CCD_。
我有什么理由不这样做吗?它似乎对我想要做的事情有效,但我担心这样使用它是不好的形式/黑客行为/错误的其他原因?
我试着搜索一个这样使用它的例子,但我真的不知道如何简洁地描述它来有效地搜索。我使用的例子并没有很好地显示它,但当我有很多属性可以分组到一个数组中时,它最终会简单得多。我觉得它在语义上。。。不知怎么的?
你可以这样做,但如果你在同一个数组中有不同的属性,那么使用关联数组可能会更好。在我看来,它会更有条理。它也将更加面向对象,如果您添加更多的属性,它仍然可以。
const myTent = [
{ item: 'Backpacking',
weight: '2kg',
},
{ item: 'Mountaineering',
weight: '2.2kg',
},
{ item: 'Bikepacking',
weight: '2.4kg',
},
];
通常使用对象而不是数组,因为在命名对象时,更容易不混淆哪个元素意味着什么。
// Weight property
{
min: 2,
standard: 2.2,
max: 2.4,
unit: 'kg',
}