JS可否 var a[id] = new init();创建对象数组、进行赋值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS可否 var a[id] = new init();创建对象数组、进行赋值?相关的知识,希望对你有一定的参考价值。

如题,在这句之前要不要初始化对象数组?
是这样的,我为a对象数组加了下面的函数:
var a = [];//现在加进去
function add() //添加一个对象到对象数组a
var a[id] = new init();
id++;
if(id==10000)id = 0;

function step() //每一帧为a对象数组的所有对象调用ctl函数
for (i=0;i<10000;i++)
if(typeof(a[i]) != "undefined")
a[i].ctl();//ctl是a对象的控制函数


setInterval("step()",1);
setInterval("add()",100);
现在加了这一句还是空白页面,调试了一下是这里有问题,求解

当然要,可以有两种方式
1、var a = new Array();
2、var a = []; // 推荐第二种追问

我已经更新了问题,请问能否帮我检查一下呢。。。

追答

引用网友的这一句话“ var a[id] = new init(); //-- 这里的变量声明是错误的,应该讲var去除掉”
之后,可能还存在一些逻辑错误:
1、setInterval("step()",1); setInterval("add()",100); 你的意思是每隔1ms和100ms分别执行step和add函数。但实际上,一方面1ms的精确度无法达到(这是程序设计内部规定的),另一方面循环10000次所需时间可能比1ms所需时间更多但是少于100ms,因此step里面的a[i]永远是undefined,a[i]ctr()不会执行
2、id必须初始值为0,你的程序没有看到。

参考技术A function add() //添加一个对象到对象数组a
var a[id] = new init(); //-- 这里的变量声明是错误的,应该讲var去除掉.
id++;
if(id==10000)id = 0;


改为
var id=0;
function add()
a[id] = new init();
id++;
if(id==10000)id = 0;
追问

非常感谢你的回答!!!!但可惜只能采纳一个答案!!

js 中 new Array() var a={} var a=[] new Object()

var a={};
new Object();

表示定义一个空对象;

new Array();
var a=[];

表示定义一个空数组;

 

其他:

数组表示有序数据的集合,而对象表示无序数据的集合;

在Javascript语言中,关联数组就是对象,对象就是关联数组。这一点与php语言完全不同,在php中,关联数组也是数组。

单个对象是没有length属性的,所以不能a.length求长度;数组可以;

以上是关于JS可否 var a[id] = new init();创建对象数组、进行赋值?的主要内容,如果未能解决你的问题,请参考以下文章

js 中 new Array() var a={} var a=[] new Object()

js中var a=new Object()和var a=有啥区别吗?

js中var a=new Object()和var a={}有什么区别吗?

pyhon__new__方法.py

shell简单使用变量之三

js中使用new Date(str)创建时间对象不兼容firefox和ie的解决方式