Javascript 如何用对象模式填充数组?

Javascript 如何用对象模式填充数组?,javascript,arrays,object,Javascript,Arrays,Object,我有一个默认值的模式,如下所示: DataStructure.prototype.modelPattern = { param1: 0, param2: 1, ... param462: 1500 }; 此模式表示所谓模型的结构。由于我需要不止一个模型,我需要创建更多的modelPattern对象。它们都保存在同一类中的数组中: DataStructure.prototype.models = []; 因此,这是行不通的: this.models[rightP

我有一个默认值的模式,如下所示:

DataStructure.prototype.modelPattern = {
    param1: 0,
    param2: 1,
    ...
    param462: 1500
};
此模式表示所谓模型的结构。由于我需要不止一个模型,我需要创建更多的modelPattern对象。它们都保存在同一类中的数组中:

DataStructure.prototype.models = [];
因此,这是行不通的:

this.models[rightPlace] = this.modelPattern;
。。。因此,只需将对modelPattern对象的引用保存到数组中

所以我需要创建modelPattern的新对象并将它们保存到数组中。我已经试过了:

new modelPattern;
modelPattern.create();

这是我的第一个OOP javascript项目,所以我想我错过了一些导致我的问题的东西。我需要模式的解决方案,因为我不想在需要的地方用不同的方法反复定义非常长的内容。

您应该使用函数。 e、 g


你理解对象原型和实例之间的区别吗?原型只有在有多个实例的情况下才有用,否则可以使用单个对象来确保。 为什么不简单地将modelPattern存储在单独的原型中?它肯定更模块化

function ModelPatternConstruct () {
  this.param1 = 0;
  this.param2 = 1;
  //etc.
}
您可以基于构造函数创建modelPatterns。它们将继承原型的值。最后,如果希望通过命名键访问模型,可能需要考虑对象而不是数组来存储它们。

DataStructure.prototype.models = {
  rightPlace: new ModelPatternConstruct(),
  leftPlace: new ModelPatternConstruct()
}
// now you can modify them like you wanted
DataStructure.prototype.models.param1 = 5;
或者,如果您在构造函数内部进行工作:通常是在原型函数内部进行简单的键值赋值,并使用Object.prototype.myFunction=etc在外部添加函数


你的问题让我觉得你在OOP中采取了错误的方法,但是我不能确定我看到的代码是否正确。你真的希望所有新的数据结构对象共享同一个模型数组吗?你所说的模型模式是什么意思?完全可能是我使用OOP的方式不对我想我会用试错法来理解它。关于您的问题:我没有多个DataStructure对象。此外,我只有一个模型阵列。modelPattern刚刚获得了保存在其中的所有默认值。但正如您在下面看到的,我已经构建了一个解决方案,其中包含一个函数来生成对象并将默认值写入其中。非常感谢你的帮助!非常感谢你!这对我帮助很大。我不知道我可以用一个简单的循环来创建对象的变量。我想我需要提前申报。它适用于循环的修改版本。谢谢!非常感谢您的详细回复!所以实际上我使用prototype,因为我认为我需要它来访问其他类中的变量和函数。我错了吗?不完全错。如果您只有一个DataStructure对象,那么为其构建构造函数是没有意义的,而是使用对象文本,然后使用var-DataStructure={}。为您的模型模式创建一个原型是有意义的,因为您有多个原型,因此实例可以继承原型值,正如您假定的那样;我有一个默认值数组的原型。是的,这也很有效。你想返回这个而不是数据结构,但我不知道有什么不同?那么,返回这个比返回数据结构有另一种行为?
DataStructure.prototype.models = {
  rightPlace: new ModelPatternConstruct(),
  leftPlace: new ModelPatternConstruct()
}
// now you can modify them like you wanted
DataStructure.prototype.models.param1 = 5;
function DataStructure() {
  this.models = {
    rightPlace: new ModelPatternConstruct(),
    leftPlace: new ModelPatternConstruct()
  }
  this.models.somePattern = new ModdelPatternConstruct();
}