日期:2014-05-17  浏览次数:20761 次

Javascript将String转化为数组的问题,很有意思,大神解释下
<SCRIPT LANGUAGE="JavaScript"> 
var treemenu=new Array(
"菜单树","","",[],"images/tree/tree_base.gif",0,"",
["系统维护","eos_no_action","",[[["EOSMenu"],["null"]],[["menuID"],["MENU09"]]],"images/tree/tree_package.gif",0,"",
["用户权限管理","eos_no_action","",[[["EOSMenu"],["null"]],[["menuID"],["MENU09_01"]]],"images/tree/tree_package.gif",0,"",
["用户管理","eos_no_action","",[[["EOSMenu"],["null"]],[["menuID"],["MENU09_01_01"]]],"images/tree/tree_page.gif",0,""]]]);

定义一个数组,然后alert(treemenu);结果是正常的

但是先拼接一个字符串,在定义给数组,
var stb=new String();
stb+=("\"权限菜单\",\"\",\"\",[],\"../images/tree/tree_base.gif\",0,\"\",");
stb+=("[\"菜单树\",\"eos_no_action\",\"\",[[[\"EOSMenu\"],[\"null\"]],[[\"menuID\"],[\"MENU01\"]]],\"../images/tree/tree_package.gif\",0,\"\",");
stb=stb.substring(0,stb.length-1);
var treemenu=new Array(stb);
结果却还是字符串的样子  
求解


------解决方案--------------------
Array有三种标准构造函数:
arrayObj = new Array()
arrayObj = new Array([size])
arrayObj = new Array([element0[, element1[, ...[, elementN]]]])

size
可选项。可选项数组的大小。由于数组的下标是从零开始,创建的元素的下标将从零到 size -1。

element0,...,elementN
可选项。要放到数组中的元素。这将创建具有 n + 1 个元素的长度为 n + 1 的数组。使用该语法时必须有一个以上元素。


所以从你的写法来说,a1的类型应该是 size 才比较合理。或者其当作一个完整对象调用第三种构造函数了。