日期:2014-05-16  浏览次数:20556 次

javascript object 一个最基础的问题,键名必须有吗?
今天写js,用object类型的时候 没有想到报错了。
提问:object对象的成员必须要有键名??

<html><body><script>
/*
传入的参数 callback 情况
(1) string  即callback函数名称
(2) objcet  第一个则为callback函数名称,第二个为传入参数
*/

function ajaxFunc(callback)
{
  /* 架设json是ajax返回的字符串 */
  var json = '......';

  if(typeof callback == 'object' && callback.func && callback.opt)
  {
    eval(";\n"+callback.func+"("+json+","+callback.opt+");\n");
  } else if(typeof callback == 'string') {
    eval(";\n"+callback+"("+json+");\n");
  } else {
    alert('param error!');
  }
}

function callbackFunc(json,opt)
{
  alert(json);
  alert(opt);
}

//var pam = 'callbackFunc';
//var pam = {'callbackFunc',{objA,objB,objC,objD}};
//var pam = {'callbackFunc',[objA,objB,objC,objD]};
var pam = {'callbackFunc',{objA,objB,objC,objD}};
ajaxFunc(pam);
</script></body></html>




// obj1 报错! SyntaxError: missing : after property id @ file:///d:/My%20Documents/kk.htm
var obj1 = {'A','B','C','D'};
var obj2 = {'a':'avalue','b':'bVlua'};





------解决方案--------------------
必须有啊,你就当object是个hashmap就行了,没有key,无法存储以及读取。

如果想要无key,建议用数组
var arrayNew = ['A','B','C','D'];
for(var i=0; i< arrayNew.length; i++)
{
    alert(arrayNew [i]); //console.log(arrayNew[i]);
}
------解决方案--------------------
必须要有,如果你不想要键名的话,你可以用数组。
------解决方案--------------------
好吧 我只能说
数据结构 是脱离语言的概念