在javascript中创建其他对象的数组?

在javascript中创建其他对象的数组?,javascript,Javascript,这样的事情是否可能: function FooClass() { var barsArray=new Array(); var index=0; function addBar() { barsArray[index]=new BarClass(index); } } function BarClass() { var myIndex; function BarClass(index) { myIndex=index;

这样的事情是否可能:

function FooClass()
{
   var barsArray=new Array();
   var index=0;

   function addBar()
   {
     barsArray[index]=new BarClass(index);
   }
}

function BarClass()
{
   var myIndex;
   function BarClass(index)
   {
      myIndex=index;
   }
}

我推断您想要一个Foo对象,并且Foo对象应该包含一个Bar对象数组。每个Bar对象都应该知道其父Foo对象中的数组索引

如果这是一个准确的描述,请尝试以下方法:

function BarClass(idx) {
    this.myIndex = idx;
}

function FooClass(howMany) {
    this.barsArray = [];

    for (var x = 0; x < howMany; x++) {
        this.barsArray[x] = new BarClass(x);
    }

}

var foo = new FooClass(5);
// foo.barsArray[0].myIndex === 0
// foo.barsArray[1].myIndex === 1
// foo.barsArray[2].myIndex === 2
// foo.barsArray[3].myIndex === 3
// foo.barsArray[4].myIndex === 4
// foo.constructor === 'FooClass'
// foo.barsArray[0].constructor === 'BarClass'
函数类(idx){
this.myIndex=idx;
}
函数类(有多少个){
this.barsArray=[];
对于(变量x=0;x
祝你好运

不完全正确(实际上它可以编译,但可能没有达到您的预期)

我假设您想要创建一个
FooClass
类,该类使用
addBar
方法将
BarClass
对象附加到它的
barsArray
成员

addBar
函数只是
FooClass
函数/构造函数中的一个局部变量。要从构造函数外部访问它,需要将其分配给
this.addBar
。除了记住递增
索引
,这就是您在
FooClass
中需要更改的全部内容

对于
BarClass
类,请记住“类”实际上只是一个构造函数。您不需要(也不能)一个单独的构造函数
BarClass
只是一个函数,它获取一个索引并将其分配给
this.myIndex

function FooClass()
{
   // use this.barsArray = [], etc if you want them to be publically available
   var barsArray=[]; // It's usually better to use "[]" instead of "new Array()"
   var index=0;

   this.addBar = function() {
     barsArray[index]=new BarClass(index);
     index++;
   }
}

function BarClass(index)
{
   this.myIndex=index;
}
如果将
barsArray
index
更改为属性而不是局部变量(“this.barsArray=[];”和“this.index=0”),则可以将
addBar
放入
FooClass.prototype
中,该函数将只有一个实例:

function FooClass()
{
   this.barsArray=[];
   this.index=0;
}

FooClass.prototype.addBar = function() {
   this.barsArray[this.index]=new BarClass(this.index);
   this.index++;
};

仅供参考,对象和数组在JavaScript中的所有意图和用途都是一样的。您可以使用for(x=1;x