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,你的程序没有看到。
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=有啥区别吗?