在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