我有一个默认值的模式,其中一个看起来像这样:
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项目,所以我想我错过了导致我的问题的东西。我需要有模式的解决方案,因为我不想在我需要的不同方法中反复定义那么长的事情。
答案 0 :(得分:1)
你应该使用函数。 e.g。
function createModelPattern(name, start, end) {
var i, j, model = {};
for(i = start, j = 0; i <= end; i++, j++) {
model[name + i] = j;
}
return model;
}
console.log(createModelPattern("param", 1, 10));
答案 1 :(得分:1)
您了解对象prototype
和instance
之间的区别吗? prototype
仅在您拥有多个instances
时才有用,否则您可以使用单个对象(只需确保)。
为什么不简单地将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;
或者如果你在构造函数中进行工作:(规范是在prototype函数中进行简单的键值赋值,并在Object.prototype.myFunction = etc...
外部添加函数
function DataStructure() {
this.models = {
rightPlace: new ModelPatternConstruct(),
leftPlace: new ModelPatternConstruct()
}
this.models.somePattern = new ModdelPatternConstruct();
}